4

郡内の病気の頻度に応じて、n 個の正方形で地理マップをプロットしたいと思います。ここのように: ここに画像の説明を入力

しかし、R や qGIS でこれを行う方法がわかりませんでした。助けてくれてありがとう。

4

2 に答える 2

7

最初に、(「rect」を使用して) スタックの正方形を適切な場所にプロットする「stackbox」という小さな関数を作成します。

その関数の最初の行は次のとおりです。

stackbox <- function(x,y,n,size,maxheight=5){
  • ここで、'size' はボックスの高さと幅で、'maxheight' を使用すると、高さ 5 または高さ 10 などのスタックを作成できます。

次に、症例のある郡ごとにその関数を呼び出します。

プロセスのどこで行き詰まりましたか?

完全な機能は次のとおりです。

stackbox <- function(x,y,n,size,maxheight=5,...){
  stackheight = seq(0,n,by=maxheight)
  stackheight=diff(unique(c(stackheight,n)))

  for(col in 1:length(stackheight)){
    xl=rep(x+(col-1)*size,stackheight[col]) - (length(stackheight)/2)*size
    yb=y+size*((1:stackheight[col])-1) - (max(stackheight)/2)*size
    xr=xl+size
    yt=yb+size
    rect(xl,yb,xr,yt,...)
  }
}

例:

plot(1:10)
for(i in 1:10){
 stackbox(i,i,i,3,size=.1,col="red",border="white")
}

マップ上でこれを行うには、sp および maptools パッケージと、データを含むシェープファイルまたはその他の地理空間データ ソースが必要です。

africa=readShapeSpatial(file.path(mapLib,"africa.shp"))
plot(africa,border="gray")
coords=coordinates(africa)
for(i in 1:nrow(africa)){
  if(cases[i]>0){
    stackbox(coords[i,1],coords[i,2],africa$cases[i],1,border="#606060",col="#0083FE")
  }
}

積み上げボックスを使用したマップ

オリジナルに近い色を選んでみました。ボックスはプロット座標にあることに注意してください。そのため、0.1 度にする必要がありました。(package:gdal の spTransform を使用して) マップをユークリッド投影に変換すると、それらの単位で適切に正方形になります。

ただし、オリジナルのように素敵なテキストラベルを作成するのは難しいでしょう...

于 2011-12-01T14:01:52.137 に答える
5

別の方法として、ポイント ジオメトリを使用して ggplot2 を使用して非常に簡単に作成できるバブル プロットをお勧めします。ヘルプページの例 ( http://had.co.nz/ggplot2/geom_point.html ):

p <- ggplot(mtcars, aes(wt, mpg)) 
p + geom_point(aes(size = qsec)) 

これは次のことにつながります。

ggplotバブルプロット

気泡の大きさは測定量を表しています。この例では地理座標を使用していませんが、簡単に使用できます。ggplot2 パッケージは、geom_path などを使用して、空間ポリゴンを追加レイヤーとして追加することもサポートしています。coord_mapのヘルプ ファイルには、マップ データを使用したいくつかの例が示されています。SpatialPolygons オブジェクトを data.frame (ggplot2 に必要) に変換する fortify 関数も参照してください。

于 2011-12-01T12:28:24.473 に答える