如何在ggplot2图形的颜色/大小图例中添加区间(组距)信息
ggplot2 合并颜色与大小图例并显示区间标签
已实现将ggplot2中颜色与大小映射合并为单个图例,但需要将图例中原本的单个数值标签(4、5…8)改为区间形式(4-5、5-6…7-8),同时保持图例的合并状态。
实现代码
library(ggplot2) # 定义区间标签和对应中点 interval_labels <- c("4-5", "5-6", "6-7", "7-8") interval_midpoints <- seq(4.5, 7.5, by = 1) ggplot(mtcars, aes(mpg, disp, color = cyl, size = cyl)) + geom_point() + # 颜色渐变配置:用区间中点作为断点,绑定区间标签 scale_colour_gradientn( colours = c('#762a83', 'white', 'white', '#35968f'), values = c(0, 50, 55, 100)/100, limits = c(4, 8), breaks = interval_midpoints, labels = interval_labels ) + # 大小映射同步配置:与颜色刻度的断点、标签完全匹配 scale_size_continuous( limits = c(4, 8), breaks = interval_midpoints, labels = interval_labels, range = c(3, 8) # 可根据需求调整点的大小范围 ) + # 合并颜色与大小图例,手动设置图例点大小增强区分度 guides(color = guide_legend(), size = guide_legend(override.aes = list(size = c(3,5,7,8))))
关键说明
- 用区间中点(4.5、5.5等)作为
breaks,既贴合原数据的数值范围,又能让颜色、大小的映射对应到区间的中心位置 - 两个刻度(颜色、大小)的
breaks和labels必须完全一致,才能保证图例自动合并为一个 scale_size_continuous的range参数可调整实际绘图中点的大小跨度,guides里的override.aes可单独设置图例中点的大小,让区间差异更直观
内容的提问来源于stack exchange,提问作者imtaiky
相关产品推荐
相关产品推荐

