r - 防止 spData::world 国家环绕 map /裁剪 map 区域

标签 r ggplot2 r-sf

我正在使用 sf::world 制作 map ,我只想绘制欧洲、非洲、亚洲和大洋洲:

library(sf)
map = spData::world %>%
    dplyr::filter(!continent %in% c("South America", "North America", "Antarctica"))

ggplot() + 
    geom_sf(data=map, aes(geometry=geom))

enter image description here

就目前情况而言,俄罗斯和大洋洲的部分地区正在环绕,并在图形上形成大量空白区域。

我尝试了 this answer 中的 st_crop 的各种组合。 ,剪掉空白:

st_crop(map, xmin=-30, xmax=180, ymin=-180, ymax=180)

但它似乎返回一张没有几何形状的空白 map 。我觉得解决方案是简单地使用这个函数,但我无法实现。

最佳答案

您可以使用此答案 https://stackoverflow.com/a/67977330/7756889 中提出的方法

library(sf)
library(ggplot2)

map = spData::world %>%
  dplyr::filter(!continent %in% c("South America", "North America", "Antarctica"))

# Russia only will not do; Fiji also crosses the antimeridean...
rossiya <- subset(map,  iso_a2 %in% c("RU", "FJ"))

pacified_rossiya <- st_shift_longitude(rossiya)

rest_of_world <- subset(map, !iso_a2 %in% c("RU", "FJ"))

map2 <- rbind(pacified_rossiya,
                rest_of_world) 

plot(st_geometry(map2))

enter image description here

它似乎在基本绘图中效果最好,但在应用于 ggplot2 时会崩溃。

关于r - 防止 spData::world 国家环绕 map /裁剪 map 区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68224036/

相关文章:

r - 市场篮分析 - 具有可变数量功能的单一模型?

r - 修改ggplot R中点和线的颜色

r - 同一图中的多个分布——使用 ggplot2 中的 geom_density 函数

r - 带对数刻度的条形图

R sf ggplot 标记 ID 中列出的多个多边形

r - 在 R 中给定边界内使用 sf 的点的平滑密度图

r - 沿给定端点和短轴的椭圆获取 n 个点

旋转辅助轴标签的文本

r - 分面后将相关系数放在 ggplot 散点图上

r - 如何在MacOS上下载Sf包