You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

修复ggplot2气泡网格图的图例与配色方案问题

解决方案

核心修改说明

针对你提出的三个问题,对应修改如下:

  1. 移除多余的渐变图例
    原代码中同时将col和fill映射到Avg,导致生成两个渐变图例。将气泡边框设为固定黑色(col = "black"),既避免多余图例,又让气泡轮廓更清晰,不会与填充色混淆。

  2. 设置红-白-蓝的多色渐变
    使用scale_fill_gradient2实现带中点的对称渐变(红→白→蓝),中点设为1-5的中间值3;如果需要更细腻的颜色过渡,可改用scale_fill_gradientn自定义多色向量。

  3. 固定图例刻度范围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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 06:40:22