我需要你的帮助,我提供了下面的示例代码。我的问题涉及将“map2”放置在“map1”左上角的正方形中,并添加从“map2”到“map1”上特定位置的箭头。我搜索了该网站,但最常讨论的主题与合并两个数据层有关。
如果您能帮助我,我将不胜感激。
library (tidyverse)
library (rnaturalearth)
world <- rnaturalearth::ne_countries(scale = "medium", returnclass = "sf")
map1<- ggplot(data = world) +
geom_sf() +
#annotation_scale(location = "bl", width_hint = 0.2) +
#annotation_north_arrow(location = "tr", which_north = "true",
# pad_x = unit(0.83, "in"), pad_y = unit(0.02, "in"),
# style = north_arrow_fancy_orienteering) +
coord_sf(xlim = c(35, 48), ylim=c(12, 22))+
xlab("Longtitude")+
ylab("Latitude")
map2<- ggplot(data = world) +
geom_sf() +
#annotation_scale(location = "bl", width_hint = 0.2) +
#annotation_north_arrow(location = "tr", which_north = "true",
# pad_x = unit(0.83, "in"), pad_y = unit(0.02, "in"),
# style = north_arrow_fancy_orienteering) +
coord_sf(xlim = c(5, 45), ylim=c(5, 45))+
xlab("Longtitude")+
ylab("Latitude")
map2
另一种拼凑解决方案是在插图中突出显示感兴趣的区域。对我来说这看起来比箭头更好:
patchwork
您可以使用具有功能的令人惊叹的包来做到这一点inset_element()
。请注意,我稍微更改了主题以map2
删除所有轴刻度和标签,但您不必:该包可以通过多种方式
cowplot
组装s。可用于在绘图顶部绘制箭头。ggplot
ggplot::annotate()
下面的例子
map1
首先绘制。在其顶部的左上角,我们添加一个空矩形,即 的“画布”map2
。最后,我们添加箭头annotate()
。您可能想要调整元素的坐标和大小。将绘图尺寸固定为正方形可能有助于使元素的位置保持一致。
ggsave()
您可以通过使用相同的高度和宽度值来做到这一点。您可以使用
ggmagnify
:geom_magnify
这是一个封装
grid
选项:我想您需要在缩放视口中抑制 x 和轴标签(调整
map2
),但这不是问题,不是吗?只需添加一个
cowplot
选项:这有点烦人,因为你不能像拼凑一样使用原始坐标,所以需要一些尝试和错误 - 但我无法找到一种拼凑的方法来让箭头从插图到整个地图并且在两个图层上都可见。
应该注意的是,我编辑了插图,使其没有图例并且有边框: