首先,我知道这个答案:Mapping different states in R using facet wrap
但我使用库对象sf
。
似乎这facet_wrap(scales = "free")
不适用于geom_sf
在 ggplot2 中绘制的对象。我收到这条消息:
Erreur : 自由秤仅支持
coord_cartesian()
和coord_flip()
有什么我错过的选择吗?
任何人都解决了这个问题而没有被迫使用cowplot
(或任何其他网格排列)?
确实,这里有一个例子。我想在各个方面分别显示不同的法国地区,但有自己的 x/y 限制。
没有尺度的结果=“免费”
比例尺是根据整个地图的范围计算的。
FRA <- raster::getData(name = "GADM", country = "FRA", level = 1)
FRA_sf <- st_as_sf(FRA)
g <- ggplot(FRA_sf) +
geom_sf() +
facet_wrap(~NAME_1)
使用cowplot的结果
我需要使用 ggplots 列表,然后可以将它们组合起来。这是目标输出。它更干净。但我也想要一种干净的方式来添加图例。(我知道在另一个 SO 问题中可能有一个共同的传说: facet wrap distorts state maps in R)
g <- purrr::map(FRA_sf$NAME_1,
function(x) {
ggplot() +
geom_sf(data = filter(FRA_sf, NAME_1 == x)) +
guides(fill = FALSE) +
ggtitle(x)
})
g2 <- cowplot::plot_grid(plotlist = g)