我提供了下面的示例代码。我的问题涉及到将“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
6条答案
按热度按时间xam8gpfp1#
另一个拼凑的解决方案是在插图中突出显示感兴趣的区域。我觉得这比箭还好看:
yxyvkwin2#
您可以使用令人惊叹的软件包
patchwork
来实现这一点,该软件包具有一个函数inset_element()
。请注意,我稍微改变了map2
的主题,删除了所有轴刻度和标签,但您不必这样做:sigwle7e3#
您可以使用
ggmagnify
的geom_magnify
:pkwftd7m4#
cowplot
软件包可以通过多种方式组装ggplot
。ggplot::annotate()
可用于在图的顶部绘制箭头。下面的示例首先绘制
map1
。在左上角,我们添加一个空矩形,即map2
的“canvas”。最后,我们添加带有annotate()
的箭头。您可能需要调整元素的坐标和大小。将绘图尺寸固定为正方形可能有助于使元素的放置保持一致。您可以使用
ggsave()
,并为高度和宽度设置相同的值。dbf7pr2w5#
下面是一个
grid
包选项:我猜你需要在缩放的视口中抑制x和轴标签(调整
map2
),但这不是问题,不是吗?r1zk6ea16#
添加
cowplot
选项:这有点烦人,因为你不能使用原始坐标,因为你可以与拼凑,所以它需要一些尝试和错误-但我不能想出一个方法与拼凑有箭头从插图到整体Map,并在两个层可见。
应该注意的是,我编辑了插图,没有图例和边界: