Rには、あらゆる種類の空間分析のためのパッケージが明らかにいくつかあります。 CRANタスクビュー:空間データの分析 で確認できます。これらのパッケージは多数あり、多様ですが、私がやりたいのは、いくつかの単純な thematic maps だけです。郡と州のデータFIPSコードがあり、郡と州の境界のESRIシェイプファイルと、データとの結合を可能にする付随するFIPSコードがあります。シェイプファイルは、必要に応じて他の形式に簡単に変換できます。
では、Rで主題図を作成する最も簡単な方法は何でしょうか。
このマップはESRI Arc製品で作成されたように見えますが、これはRで実行したいタイプの作業です。
代替テキストhttp://www.infousagov.com/images/choro.jpg マップ ここからコピー 。
次のコードはうまく機能しました。少しカスタマイズすれば完了です。
(ソース: eduardoleoni.com )
library(maptools)
substitute your shapefiles here
state.map <- readShapeSpatial("BRASIL.shp")
counties.map <- readShapeSpatial("55mu2500gsd.shp")
## this is the variable we will be plotting
counties.map@data$noise <- rnorm(nrow(counties.map@data))
ヒートマップ機能
plot.heat <- function(counties.map,state.map,z,title=NULL,breaks=NULL,reverse=FALSE,cex.legend=1,bw=.2,col.vec=NULL,plot.legend=TRUE) {
##Break down the value variable
if (is.null(breaks)) {
breaks=
seq(
floor(min(counties.map@data[,z],na.rm=TRUE)*10)/10
,
ceiling(max(counties.map@data[,z],na.rm=TRUE)*10)/10
,.1)
}
counties.map@data$zCat <- cut(counties.map@data[,z],breaks,include.lowest=TRUE)
cutpoints <- levels(counties.map@data$zCat)
if (is.null(col.vec)) col.vec <- heat.colors(length(levels(counties.map@data$zCat)))
if (reverse) {
cutpointsColors <- rev(col.vec)
} else {
cutpointsColors <- col.vec
}
levels(counties.map@data$zCat) <- cutpointsColors
plot(counties.map,border=gray(.8), lwd=bw,axes = FALSE, las = 1,col=as.character(counties.map@data$zCat))
if (!is.null(state.map)) {
plot(state.map,add=TRUE,lwd=1)
}
##with(counties.map.c,text(x,y,name,cex=0.75))
if (plot.legend) legend("bottomleft", cutpoints, fill = cutpointsColors,bty="n",title=title,cex=cex.legend)
##title("Cartogram")
}
それをプロットする
plot.heat(counties.map,state.map,z="noise",breaks=c(-Inf,-2,-1,0,1,2,Inf))
投稿以来、このトピックに関するいくつかの活動があったため、ここに新しい情報をいくつか追加すると思います。 Revolutionsブログの「Choropleth Map Rチャレンジ」への2つの優れたリンクを以下に示します。
うまくいけば、これらはこの質問を表示している人々にとって有用です。
ではごきげんよう、
ジェイ
パッケージをチェックしてください
library(sp)
library(rgdal)
これは地理データに最適です。
library(RColorBrewer)
着色に役立ちます。 このマップ は、上記のパッケージとこのコードで作成されます。
VegMap <- readOGR(".", "VegMapFile")
Veg9<-brewer.pal(9,'Set2')
spplot(VegMap, "Veg", col.regions=Veg9,
+at=c(0.5,1.5,2.5,3.5,4.5,5.5,6.5,7.5,8.5,9.5),
+main='Vegetation map')
"VegMapFile"
はシェープファイルであり、"Veg"
は表示される変数です。少しの作業でおそらくもっとうまくできるでしょう。画像のアップロードが許可されていないようです。ここに画像へのリンクがあります:
PBSmappingパッケージ(ビネット/マニュアルとデモを参照)と this O'ReillyData Mashups in R記事(残念ながら無料ではありませんが、ダウンロードするには4.99 $相当です Revolutions blog )。
たった3行です!
library(maps);
colors = floor(runif(63)*657);
map("state", col = colors, fill = T, resolution = 0)
できた!! 2行目を63要素の任意のベクトル(colors()のメンバーである0〜657の各要素)に変更するだけです
気を取りたいなら、次のように書くことができます:
library(maps);
library(mapproj);
colors = floor(runif(63)*657);
map("state", col = colors, fill = T, projection = "polyconic", resolution = 0);
63の要素は、次のコマンドを実行して取得できる63のリージョンを表しています。
map("state")$names;
Rグラフィックギャラリーには、非常に 類似のマップ があります。コードはこちら:www.ai.rug.nl/~hedderik/R/US2004。 legend()関数で凡例を追加する必要があります。