:ところで周りのこの作品は、もともとこのリンクで育った
は、私たちことがわかっthis blog entryからの更なる情報について
下の元の記事を読みます直接に空間ポリゴンを使用できますggplot::geom_polygon()
あなただけ後述するように、何か
を視覚化する必要がある場合はSPEEDをプロット取り組む方法
、そのようなプロットは、ピクセルの数が多い非常に遅くなることがあります。したがって、ポリゴンに変換する前に、ピクセル数(ほとんどの場合、マップ内の情報量を減らすことはできません)を減らすことを検討してください。したがって、raster::aggregate
を使用して、ピクセル数を合理的な量に減らすことができます。
この例では、ピクセル数が4(2 * 2、水平方向*垂直)の順にどのように減少するかを示しています。詳細は?raster::aggregate
を参照してください。
r <- aggregate(r, fact = 2)
# afterwards continue with rasterToPolygons(r)...
オリジナルポスト:
しばらくして、私はこの問題を解決する方法を発見しました。 ラスタをポリゴンに変換する!この考えは基本的にMarc Needham's blog postの後に実装されました。
しかし、1つの欠点があります:ggplotは、必然的に直面する多数のポリゴンでは非常に遅くなります。ただし、png()
(またはその他の)デバイスにプロットすることで、スピードアップできます。ここで
は、コード例です:
library(raster)
library(ggplot2)
library(ggmap)
r <- raster(....) # any raster you want to plot
rtp <- rasterToPolygons(r)
[email protected]$id <- 1:nrow([email protected]) # add id column for join
rtpFort <- fortify(rtp, data = [email protected])
rtpFortMer <- merge(rtpFort, [email protected], by.x = 'id', by.y = 'id') # join data
bm <- ggmap(get_map(location = "Shanghai", maptype = "hybrid", zoom = 10))
bm + geom_polygon(data = rtpFortMer,
aes(x = long, y = lat, group = group, fill = layer),
alpha = 0.5,
size = 0) + ## size = 0 to remove the polygon outlines
scale_fill_gradientn(colours = topo.colors(255))
これは、このようなものになり:
この回答をいただき、ありがとうございます。ただし、デカルト座標を使用すると、アスペクト比は維持されません。したがって、地理的アプリケーションにはあまり適していません – loki
次のように追加してください:bm < - bm + coord_fixed(xlim = c(a、b)、ylim = c(c、d)、ratio = 1.3)、a、b 、c、dは、選択したビューパネルの範囲です。ここでの重要なのは、配給量を1.3に設定することです。 – pdbentley
代わりに、bm < - bm + coord_fixed(1.3)を追加するだけです。 – pdbentley