相关疑难解决方法(0)

使用facet wrap并使用geom_sf映射不同的状态

首先,我知道这个答案:使用facet wrap在R中映射不同的状态
但我使用库的对象sf.
似乎facet_wrap(scales = "free")不适用于使用geom_sfggplot2 绘制的对象.我收到这条消息:

Erreur:只有coord_cartesian()和 支持自由音阶coord_flip()

有没有我错过的选择?
任何人都可以在不被迫使用cowplot(或任何其他网格范围)的情况下解决问题?

的确,这是一个例子.我想分别展示不同的法国地区,但有自己的x/y限制.

没有scale ="free"的结果

使用整个地图的范围计算尺度.

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)
Run Code Online (Sandbox Code Playgroud)

具有geom_sf的构面区域

使用cowplot的结果

我需要使用ggplots列表然后将它们组合起来.这是目标输出.它更清洁.但我也想要一个干净的方式来添加一个传奇.(我知道可能有一个共同的传说,就像在另一个SO问题中: facet wrap扭曲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)
Run Code Online (Sandbox Code Playgroud)

具有geom_sf和cowplot的构面区域

r ggplot2 r-sf

10
推荐指数
1
解决办法
1183
查看次数

标签 统计

ggplot2 ×1

r ×1

r-sf ×1