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

如何在R的ggplot2中基于置信区间为散点着色

按置信区间分组着色的散点图实现方案

首先定义你的数据和置信区间边界:

x <- c(1,2,3,4,2,4)
y <- c(10,20,30,40,10,20)
df <- data.frame(x,y)

# 设定置信区间上下限
x_low <- 2
x_high <- 3
y_low <- 20
y_high <- 30

方法1:显式新增分组列(推荐,可读性高易维护)

虽然你觉得新增列可能不够"优",但这种方式能让分组逻辑清晰可见,方便后续检查分组是否正确,也便于复用分组规则:

library(dplyr)
library(ggplot2)

# 新增分组列
df <- df %>%
  mutate(
    group = case_when(
      x >= x_low & x <= x_high & y >= y_low & y <= y_high ~ "同时在x和y置信区间内",
      x >= x_low & x <= x_high & !(y >= y_low & y <= y_high) ~ "在x置信区间内但不在y内",
      !(x >= x_low & x <= x_high) & y >= y_low & y <= y_high ~ "在y置信区间内但不在x内",
      TRUE ~ "同时在两个置信区间外"
    )
  )

# 绘制散点图
ggplot(df, aes(x = x, y = y, color = group)) +
  geom_point(size = 3) +
  # 自定义四种颜色,可按需调整
  scale_color_manual(values = c("#1f77b4", "#ff7f0e", "#2ca02c", "#d62728")) +
  labs(x = "x变量", y = "y变量", color = "分组类型", title = "按置信区间分组的散点图") +
  theme_minimal()

方法2:绘图时动态计算分组(无需修改原数据框)

如果不想改动原始数据,可以在ggplot的aes映射里直接计算分组逻辑,省去新增列的步骤:

library(dplyr)
library(ggplot2)

ggplot(df, aes(x = x, y = y, 
               color = case_when(
                 x >= x_low & x <= x_high & y >= y_low & y <= y_high ~ "组1:双区间内",
                 x >= x_low & x <= x_high & !(y >= y_low & y <= y_high) ~ "组2:仅x区间内",
                 !(x >= x_low & x <= x_high) & y >= y_low & y <= y_high ~ "组3:仅y区间内",
                 TRUE ~ "组4:双区间外"
               ))) +
  geom_point(size = 3) +
  scale_color_manual(values = c("#1f77b4", "#ff7f0e", "#2ca02c", "#d62728")) +
  labs(x = "x变量", y = "y变量", color = "分组类型", title = "按置信区间分组的散点图") +
  theme_minimal()

两种方法都能实现你的需求,方法1适合需要后续复用分组逻辑的场景,方法2则更轻量化。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 21:40:22