は、ここで上記@hrbrmstr & @Rich Paulooによって提案されたアイデアだけでなく、the answer to this questionを組み込んだソリューションです:
ステップ1。
library(dplyr)
# return a list of data frames (each data frame contains coordinates for one contour);
# note that there may be multiple contours at the same alpha/colour/fill,
# hence the need to split by group rather than by these aesthetic mappings.
dg <- layer_data(gg) %>%
select(group, x, y) %>%
split(.$group) %>%
lapply(function(d){d[,-1]})
ステップ2:ggplotオブジェクトから関連データを抽出します。 writeOGR
に渡される、SpatialPolygonsDataFrameオブジェクトにデータ・フレームを変換:
library(sp)
# convert each data frame to a Polygon class object
polygons <- lapply(dg, Polygon)
# convert each Polygon class object to Polygons class object
polygons <- lapply(seq_along(polygons),
function(i){
Polygons(list(polygons[[i]]),
ID = names(dg)[i])
})
# convert list of Polygons class object to one SpatialPolygons object
polygons <- SpatialPolygons(polygons)
# convert SpatialPolygons object to SpatialPolygonsDataFrame object
polygons <- SpatialPolygonsDataFrame(polygons,
data = layer_data(gg) %>%
select(group, alpha, colour, fill) %>%
unique(),
match.ID = "group")
ステップ3。
rgdal::writeOGR(obj = polygons,
dsn = getwd(), # or wherever you wish to store it
layer = "filename", # or whatever you wish to name it
driver = "ESRI Shapefile")
(私は別のGISプログラムでこれを確認することが好ましいだろうが、私はいずれかがこのコンピュータにインストールされていない)Rで結果を確認:
シェープファイルとしてSpatialPolygonsDataFrameオブジェクトを保存
# read the shapefile back into R
sp <- rgdal::readOGR(dsn = getwd(),
layer = "filename")
# fortify as a data frame
spdf <- left_join(broom::tidy(sp, region = "group"),
[email protected],
by = c("id" = "group"))
# plot
ggplot(spdf,
aes(x = long, y = lat, group = group, alpha = alpha)) +
geom_polygon(color = "black") +
coord_map()
'?ggplot_build' – hrbrmstr
あなたは')( 'writeOGRを試してみましたか? –