修复ggplot2气泡网格图的图例与配色方案问题
解决方案
核心修改说明
针对你提出的三个问题,对应修改如下:
移除多余的渐变图例
原代码中同时将col和fill映射到Avg,导致生成两个渐变图例。将气泡边框设为固定黑色(col = "black"),既避免多余图例,又让气泡轮廓更清晰,不会与填充色混淆。设置红-白-蓝的多色渐变
使用scale_fill_gradient2实现带中点的对称渐变(红→白→蓝),中点设为1-5的中间值3;如果需要更细腻的颜色过渡,可改用scale_fill_gradientn自定义多色向量。固定图例刻度范围1-5
在填充刻度函数中添加limits = c(1, 5),强制图例范围覆盖1到5,同时调整刻度标签与断点为正序,匹配颜色从红(1)到蓝(5)的逻辑。
完整修正代码
基础红-白-蓝渐变版本
ggplot(yzlong2, aes(x = Period, y = Statement)) + geom_point(aes(fill = Avg, size = Count), shape = 21, col = "black") + theme_minimal() + theme( legend.position = 'top', text = element_text(color = 'grey40', size = 20) ) + scale_size_area(max_size = 15, guide='none') + scale_fill_gradient2( low = "red", mid = "white", high = "blue", midpoint = 3, name = "Average", labels = c("1", "2", "3", "4", "5"), breaks = c(1, 2, 3, 4, 5), limits = c(1, 5) )
多色细腻过渡版本(可选)
如果需要更多过渡色,替换上述scale_fill_gradient2为:
scale_fill_gradientn( colors = c("darkred", "red", "lightpink", "white", "lightblue", "blue", "darkblue"), name = "Average", labels = c("1", "2", "3", "4", "5"), breaks = c(1, 2, 3, 4, 5), limits = c(1, 5) )
内容的提问来源于stack exchange,提问作者Kaleb
相关产品推荐
相关产品推荐

