R:ヨーロッパ部分を拡大したロシアのホロプレットマップ



主なことについて簡単に説明します。最近、 infoinfoka投稿を読んでください 。 Tatyana MisyutinaのWebサイトに登り、拡大されたヨーロッパの部分を含むロシアのホロプレットマップを調べました。 そして確かに、本当にクールなアイデア。 便利に、はっきりと。 同じグラフのRの下に自分をテンプレートにしたかったのです。 結局のところ、良いアイデアは部門によって広められるべきですか?



WebサイトGlobal Administrative Areasから、ロシアの地域の国境のポリゴンを取得します。 Rにはネイティブ形式があります。 データはSpatialPolygonsDataFrameとしてロードされます。



ファイルをロードし、何を描くか試してください:



rusdf <- load('RUS_adm1.RData') plot(gadm)
      
      





そのような奇妙なことが判明しました:





原則として、すべてが正しいです。 座標の観点では、すべてが真実であると思われる投影は使用しませんでした。 しかし、「チュクチ散布」は恥ずかしいです。 もちろん、最も正しい解決策は、すでに存在するポリゴンに円筒投影を使用することです。 チュコトカは「収集」されますが、経度180経線に沿った境界線は残り、表示されます。 そして、ウランゲル島、チュコトカ自治管区。 どうやら、1つのポリゴンのエラーが原因で、接続されていません。 残念だ。 したがって、経度範囲を180度以上に拡大することが決定されました。 ええ、「戦時中のPiの数は4に達する可能性があります。」



 for(i in 1:length(gadm@polygons)){ for(j in 1:length(gadm@polygons[[i]]@Polygons)){ gadm@polygons[[i]]@Polygons[[j]]@coords[,1]<- sapply(gadm@polygons[[i]]@Polygons[[j]]@coords[,1], function(x){ if(x < 0){ x<-359.999+x } else{x} }) } }
      
      











すでに何かが迫っています。 しかし、それは何ですか? チタ地域、Aginsky Buryat、KoryakおよびKomi-Permyak自治管区。 1年間、私たちの庭でどうですか? 2003または2013? 一般に、私たちはロシア連邦の構成主体の行政統一のプロセスを開始しなければなりません。 念のために、古いリージョンを保持します。 アーカイブされたデータを視覚化するのに突然役立ちます。



 # Zabaikalsky krai (Chitinskaya obl. + Aginskiy Buryatskiy AOk) united.reg[united.reg == 2 | united.reg == 13] <- 91 united.reg <- as.character(united.reg) rus.map <- unionSpatialPolygons(gadm, united.reg) # Returning old regions (before unioning) old.regions <- list() old.regions <- c(old.regions, Polygons(gadm[gadm$ID_1==2,]@polygons[[1]]@Polygons, ID = '2')) old.regions <- c(old.regions, Polygons(gadm[gadm$ID_1==13,]@polygons[[1]]@Polygons, ID = '13')) rus.map <- SpatialPolygons(c(slot(rus.map,'polygons'), old.regions))
      
      





地域の統一後、古い国境の場所の一部の場所では、交差しないためにアーティファクトが形成されます。 ポリゴンの小さな領域とパラメーターホール(関数clean.borders)に従ってアーティファクトをフィルター処理します。 マップの準備で、それがすべてのようです。



テーブルに統計情報を読み込んで描画できます。



この表は、ポリゴンが統計と組み合わされる領域のIDを示しています。 時代遅れの地域があり、現在存在しています。 レンダリング用のポリゴンの選択は、データ列に従って行われます。「NA」が統計フィールドにある場合、この連邦のサブジェクトはまったくレンダリングされません。 統計が「ゼロ」の場合、領域はグレー表示されます。 マップの残りの色は、RColorBrewerパレットを使用して構成されます。 ここで、パレットのタイプを選択できます:(1)連続-符号の重大度を示す同じ色の陰影、または(2)発散-プラス(1つの色、例えば緑)またはマイナス(別の色、例えば赤)での平均値からの偏差



次のステップは、ベースマップを作成することです。 後続の概要図は、この基本的なチャートの2つのビューの組み合わせになります。 基本チャートからすべてのインデント、背景、軸ラベル、ラベルを削除します。



 p <- p + theme(axis.line=element_blank(),axis.text.x=element_blank(), axis.text.y=element_blank(),axis.ticks=element_blank(), axis.title.x=element_blank(), axis.title.y=element_blank(), legend.position = 'none', panel.margin = unit(c(0,0,0,0), 'cm'), axis.ticks.margin = unit(0, 'cm'), axis.ticks.length = unit(0.001, 'cm'), plot.margin = unit(c(0,0,0,0), 'cm'), panel.grid = element_blank(), panel.background = element_blank() ) p <- p + labs(x=NULL, y = NULL)
      
      





そして、ポリゴンの描画順序に関連する小さな「ハック」。 SpatialPolygonsからポリゴンを構築する場合、Ggplot2はそれらの穴プロパティを考慮しません。 その結果、モスクワ地域がモスクワの後に描画される場合、ソースデータに「排他的な」穴ポリゴンがあったとしても、ggplotはモスクワの領域を地域の色で塗りつぶします。 Adygeaと同じ問題。 したがって、これら2つの領域は、他のすべての領域が構築された後、最後に再描画されます。



ここで、1つのグラフから2つのビューを取得する必要があります。拡大されたヨーロッパ部分(p1)と国の残り(p2)です。 同じ段階で、マップ投影(等距離)、「カメラ」の位置、および表示角度を選択します。 凡例をグラフの1つに戻します。 coord_map関数の利点は、レンダリング時に、画像に表示されないデータがフィルター処理されず、グラフの可視部分を構築するときに考慮されないことです。 つまり、ロシアのヨーロッパ地域とアジア地域の統計の範囲が異なっていても、凡例と色分けに間違いはありません。 「グラフを突く方法」を使用してこのグラフのフィールドと表示角度を選択し、さまざまなオプションを並べ替えました。 誰かが私にもっと信頼できる繰り返し可能な方法を教えてくれたら嬉しいです。



最終画像は、グリッドライブラリを使用して組み立てられます。 全体図(ビューポート)に個々の要素を挿入するための領域をマークできます。 これまでのところ、「重い」グラフィックなしで、プレースホルダーの助けを借りて、要素を配置するための適切なオプションを見つけます。







虫眼鏡のシンプルなアイコンを描画して、グラフの左右の部分のスケールの違いを示します。



 magnif.glass <- function(vport){ grid.circle(x=.6,y=.6,r=.3, gp=gpar(lwd=1.5, col='grey70'), vp = vport) grid.lines(x=c(.6,.6), y=c(.5,.7), gp=gpar(lwd=1.5, col='grey70'), vp = vport) grid.lines(x=c(.5,.7), y=c(.6,.6), gp=gpar(lwd=1.5, col='grey70'), vp = vport) grid.lines(x=c(.1,.4), y=c(.1,.4), gp=gpar(lwd=1.5, col='grey70'), vp = vport) grid.lines(x=c(.1,.3), y=c(.1,.3), gp=gpar(lwd=3, col='grey70'), vp = vport) }
      
      





そして、平均値またはその他の巨大で重要な数値を持つテキストリーダーを追加します。 それがすべてのようです。







テストデータを含むすべてのコードはGitHubにあります 。 最後に、コミュニティへの2つの質問:

1.新しいモスクワの国境の形状ファイルはどこで入手できますか? この瞬間を更新したいと思います。

2.やり直し/改善が必要なものは何ですか? そして、私は偽の溶接工です。 教えて?



All Articles