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

如何基于不同t_score值使用geom_rect()为ggplot背景添加多色填充?

基于t_score区间添加背景色的散点图实现方案

要实现保留原始var1轴,同时基于t_score区间添加背景色块的效果,核心是把t_score的临界值转换为对应的var1原始值,再用geom_rect()绘制背景层。具体实现如下:

核心思路

t_score由var1标准化转换而来,我们可以通过转换公式反推出每个t_score临界值对应的var1原始范围,然后单独构建背景色块的数据集,分层绘制背景和散点。

完整代码

library(tidyverse)

set.seed(10)

# 生成原始数据
dat <- data.frame(
  var1 = round(rnorm(100, 0.200, 0.400), 3),
  label = rep("Category 1", times = 100)
)

# 计算标准化值与t_score
dat <- dat %>%
  mutate(var1_scaled = scale(var1),
         t_score = round(var1_scaled * 10 + 50))

# 提取var1的均值和标准差,用于反推临界值
var1_mean <- mean(dat$var1)
var1_sd <- sd(dat$var1)

# 创建背景色块数据集:映射t_score区间到var1区间及对应颜色
rect_data <- tibble(
  xmin = 0.8,  # 覆盖x轴分类的左边界
  xmax = 1.2,  # 覆盖x轴分类的右边界
  # 反推每个t_score临界值对应的var1值
  ymin = c(-Inf,
           (20 - 50)/10 * var1_sd + var1_mean,
           (30 - 50)/10 * var1_sd + var1_mean,
           (40 - 50)/10 * var1_sd + var1_mean,
           (46 - 50)/10 * var1_sd + var1_mean,
           (80 - 50)/10 * var1_sd + var1_mean),
  ymax = c((20 - 50)/10 * var1_sd + var1_mean,
           (30 - 50)/10 * var1_sd + var1_mean,
           (40 - 50)/10 * var1_sd + var1_mean,
           (46 - 50)/10 * var1_sd + var1_mean,
           (80 - 50)/10 * var1_sd + var1_mean,
           Inf),
  # 替换非内置颜色lightred为lightcoral,避免报错
  rect_colour = c("darkred", "red", "lightcoral", "orange", "white", "darkgreen")
)

# 分层绘制图形
ggplot(dat, aes(x = label, y = var1)) +
  # 先绘制背景色块,置于底层
  geom_rect(data = rect_data,
            aes(xmin = xmin, xmax = xmax, ymin = ymin, ymax = ymax, fill = rect_colour),
            alpha = 0.3, inherit.aes = FALSE) +
  scale_fill_identity() +  # 直接使用rect_colour中的颜色值
  # 再绘制散点
  geom_jitter(size = 4, alpha = 0.5, width = 0.15) +
  theme_minimal()

关键细节说明

  • 替换了非内置颜色lightred为lightcoral,避免因颜色名称不存在导致的绘图错误
  • inherit.aes = FALSE确保geom_rect不继承主图的映射规则,使用独立的数据集参数
  • xmin和xmax设置为0.8和1.2,是因为分类变量在x轴的数值位置为1,该范围可完整覆盖分类区域
  • alpha参数调整背景色块透明度,避免遮挡散点

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 09:42:31