59

Rには、あらゆる種類の空間分析用のパッケージが多数あります。これは、CRAN Task View: Analysis of Spatial Data で確認できます。これらのパッケージは多数あり多様ですが、私がやりたいのは単純なテーマ マップだけです。郡と州の FIPS コードを含むデータがあり、郡と州の境界の ESRI シェープ ファイルと、データとの結合を可能にする付随する FIPS コードがあります。形状ファイルは、必要に応じて他の形式に簡単に変換できます。

では、R を使用してテーマ マップを作成する最も簡単な方法は何でしょうか?

このマップは ESRI Arc 製品で作成されたように見えますが、これは私が R でやりたいことの種類です。

alt text http://www.infousagov.com/images/choro.jpg地図はこちらからコピー

4

6 に答える 6

62

次のコードは私に役立ちました。少しカスタマイズして完成です。 (ソース: 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))
于 2009-08-11T15:54:00.537 に答える
17

投稿以来、このトピックに関していくつかの活動があったため、ここにいくつかの新しい情報を追加すると思いました. Revolutions ブログの「Choropleth Map R Challenge」への 2 つのすばらしいリンクを次に示します。

コロプレスマップRチャレンジ

コロプレスチャレンジ結果

うまくいけば、これらはこの質問を見ている人々に役立ちます。

ではごきげんよう、

ジェイ

于 2010-02-10T16:21:55.380 に答える
11

パッケージをチェックする

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"、表示される変数です。少し手を加えればもっとうまくできるかもしれません。画像のアップロードが許可されていないようです。画像へのリンクは次のとおりです。

于 2009-09-08T20:06:19.227 に答える
4

たったの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;
于 2011-10-03T21:15:11.677 に答える
4

PBSmapping パッケージ (ビネット/マニュアルとデモを参照) とこのO'Reilly Data Mashups in R記事 (残念ながら無料ではありませんが、Revolutions ブログによると、ダウンロードには 4.99 ドルの価値があります) をご覧ください。

于 2009-08-11T15:41:36.303 に答える
3

R Graphics Gallery には非常によく似たマップがあり、出発点として適しています。コードはこちら: www.ai.rug.nl/~hedderik/R/US2004 . legend() 関数で凡例を追加する必要があります。

于 2009-08-11T15:31:53.033 に答える