如何为ggplot绘制的空间气泡图自定义图例?
嘿,我来帮你搞定ggplot空间气泡图的自定义图例问题!先把你的代码补全成可运行的版本(假设shp是你已经读入的空间多边形数据),再一步步给你讲各种实用的自定义技巧:
先搞定基础可运行代码
library(ggplot2) # 固定随机种子让结果可复现 set.seed(123) df <- data.frame(sim = sample((20:30),10), obs = sample(25:40,10), long = rnorm(10,10,8), lat = rnorm(10,30,15)) # 这里用一个简单的示例多边形代替你的shp数据(实际替换成你自己的空间数据即可) shp <- data.frame(long = c(5,15,15,5), lat = c(20,20,40,40), group = 1) # 你的基础气泡图完整代码 p <- ggplot() + geom_polygon(data = shp, aes(x = long, y = lat, group = group), col = "black", lwd = 0.8, fill = "slategray1", alpha = 0.5) + geom_point(data = df, aes(x = long, y = lat, size = sim), col = "darkorange", alpha = 0.7) + coord_cartesian() p
常见图例自定义需求实现
1. 改标题、加单位,让图例更易懂
默认图例标题是sim,可以改成更直观的名称,还能给刻度标签加单位:
p + labs(size = "模拟值") + # 替换默认的图例标题 scale_size_continuous(labels = function(x) paste0(x, " 单位")) # 给每个刻度标签加上单位
2. 手动控制气泡大小范围
默认的气泡大小可能不符合你的可视化需求,你可以自己定义最小和最大气泡的尺寸:
p + scale_size_continuous( limits = c(20, 30), # 限定数值范围(和你的sim数据区间匹配) range = c(2, 10) # 设置气泡的最小/最大尺寸,单位是mm )
3. 结合观测值做颜色映射,合并图例更协调
如果想同时用气泡大小表示sim、颜色表示obs,可以这样调整图例让它更美观:
# 先画出带颜色映射的图 p_col <- ggplot() + geom_polygon(data = shp, aes(x = long, y = lat, group = group), col = "black", lwd = 0.8, fill = "slategray1", alpha = 0.5) + geom_point(data = df, aes(x = long, y = lat, size = sim, color = obs), alpha = 0.7) + coord_cartesian() # 自定义图例样式 p_col + labs(size = "模拟值", color = "观测值") + # 分别设置两个图例的标题 scale_color_viridis_c(option = "plasma") + # 用更友好的viridis渐变配色 scale_size_continuous(range = c(3, 12)) + theme(legend.box = "horizontal") # 让两个图例横向排列,节省空间
4. 调整图例位置和外观
想把图例放到图外(比如底部),或者给图例加边框、改文字样式?看这里:
p + labs(size = "模拟值") + theme( legend.position = "bottom", # 图例位置可选:bottom/top/left/right,也可以用自定义坐标c(0.8,0.2) legend.box.background = element_rect(color = "black", fill = "white"), # 给图例加边框和白色背景 legend.title = element_text(size = 12, face = "bold"), # 加粗标题并调整字号 legend.text = element_text(size = 10) # 调整图例标签的字号 )
5. 隐藏多余的图例
如果底图不小心生成了多余的图例(一般不会,但以防万一),可以手动隐藏:
p + guides(fill = "none", color = "none") # 按需隐藏不需要的图例类型
内容的提问来源于stack exchange,提问作者Pulsar_534511
相关产品推荐
相关产品推荐

