You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何将map.shp作为小插图放置在ggplot图表右侧?

把GADM地图作为小插图放在ggplot图表右侧的实现方法

我来帮你搞定这个需求!要把法国行政区地图(map.shp)作为小插图放在ggplot散点图的右侧,核心是解决基础绘图系统和ggplot系统不兼容的问题,我们需要先把地图转换成ggplot可处理的对象,再用专门的布局工具组合两个图表。下面是具体的步骤和代码:

1. 加载所需的包

除了你原本用的rasterggplot2,还需要sf(处理空间数据)和patchwork(轻松组合ggplot图表):

library(raster)
library(ggplot2)
library(sf)
library(patchwork)

2. 获取并转换地图数据

你原本的map.shpSpatialPolygonsDataFrame类型,需要转换成sf对象才能用ggplot流畅绘制:

# 获取法国一级行政区地图
map.shp <- getData('GADM', country='FRA', level=1)
# 转换为sf对象
map_sf <- st_as_sf(map.shp)

3. 绘制主图和小插图

先画出你的主散点图,再把地图做成简洁的小插图(用theme_void()去掉多余的坐标轴元素):

# 主图:mtcars散点图
main_plot <- ggplot(mtcars, aes(x = hp, y = disp)) +
  geom_point(color = "#2c3e50") +
  labs(x = "马力(Horsepower)", y = "排量(Displacement)") +
  theme_bw()

# 小插图:法国地图
inset_plot <- ggplot(map_sf) +
  geom_sf(fill = "#bdc3c7", color = "white", linewidth = 0.3) +
  theme_void() # 清空主题,让地图更紧凑

4. 组合两个图表

patchworkplot_layout()设置宽度比例,让主图占据大部分空间,小图放在右侧:

# 组合图表,宽度比例4:1(主图:小插图)
main_plot + inset_plot +
  plot_layout(widths = c(4, 1))

这样就能得到主散点图右侧带法国地图小插图的组合图表啦!如果你习惯用gridExtra包,也可以用grid.arrange()来实现类似的布局,但patchwork的语法更贴合ggplot的使用习惯。

内容的提问来源于stack exchange,提问作者89_Simple

火山引擎 最新活动