ggplot2のポリゴン以外のすべてを埋める方法はありますか?
この方法は、とにかく少し非正統的かもしれませんが、:
library(mapdata)
library(ggmap)
library(ggplot2)
library(raster)
ggmap_rast <- function(map){
map_bbox <- attr(map, 'bb')
.extent <- extent(as.numeric(map_bbox[c(2,4,1,3)]))
my_map <- raster(.extent, nrow= nrow(map), ncol = ncol(map))
rgb_cols <- setNames(as.data.frame(t(col2rgb(map))), c('red','green','blue'))
red <- my_map
values(red) <- rgb_cols[['red']]
green <- my_map
values(green) <- rgb_cols[['green']]
blue <- my_map
values(blue) <- rgb_cols[['blue']]
stack(red,green,blue)
}
Peru <- get_map(location = "Peru", zoom = 5, maptype="satellite")
data(wrld_simpl, package = "maptools")
polygonMask <- subset(wrld_simpl, NAME=="Peru")
peru <- ggmap_rast(Peru)
peru_masked <- mask(peru, polygonMask, inverse=T)
peru_masked_df <- data.frame(rasterToPoints(peru_masked))
ggplot(peru_masked_df) +
geom_point(aes(x=x, y=y, col=rgb(layer.1/255, layer.2/255, layer.3/255))) +
scale_color_identity() +
coord_quickmap()
経由this、this、およびthis質問/回答。私が探しています何
まず、これは簡単であると思った場合= 1
アルファと透明の塗りつぶし 層とペルーとその周辺です。しかし、その後、私は見て、geom_polygon
は非常に穴のあるポリゴンが好きではないことを思い出しました。幸いにも、geom_polypath
パッケージggpolypathからします。しかし、ggmap
のデフォルトパネル拡張では、 "grid.Call.graphics(L_path、x $ x、x $ y、index、switch(x $ rule、winding = 1L ..)"エラーが発生します。
ですから、
library(mapdata)
library(ggmap)
library(ggplot2)
library(raster)
library(ggpolypath) ## plot polygons with holes
Peru <- get_map(location = "Peru", zoom = 5, maptype="satellite")
data(wrld_simpl, package = "maptools")
polygonMask <- subset(wrld_simpl, NAME=="Peru")
bb <- unlist(attr(Peru, "bb"))
coords <- cbind(
bb[c(2,2,4,4)],
bb[c(1,3,3,1)])
sp <- SpatialPolygons(
list(Polygons(list(Polygon(coords)), "id")),
proj4string = CRS(proj4string(polygonMask)))
sp_diff <- erase(sp, polygonMask)
sp_diff_df <- fortify(sp_diff)
ggmap(Peru,extent="normal") +
geom_polypath(
aes(long,lat,group=group),
sp_diff_df,
fill="white",
alpha=.7
)
を行うことができます – Nancy
''? '' ''サブセット(coast_map、地域!= "ペルー")を使用してperu.coast変数を置き換えることができるためのおかげで提案はありますが、あなたはworldHiresのすべてのデータを取りますが、これは海をカバーしません。回避策は、すべての隣人と海洋を選択することですnシェイプファイルが、複雑になる可能性があります。私は本当に補完または逆のアプローチを探しています。 – Lod
結果がここに表示されるようにはなっていません。途中に穴が開いていますか(つまり、ペルーが切り取られていますか?) – lukeA