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

如何用R语言ggplot2在同一张图中绘制两条带置信区间的折线

R语言ggplot2双组带置信区间折线图实现方案

实现逻辑

将两组数据合并为统一数据集并新增分组标识,通过ggplot2的美学映射自动为两组分配不同的折线、置信区间填充色,同时自动生成对照图例。

完整可运行代码

library(ggplot2)
# 1. 读取两组数据
data1 <- read.table("group1.csv", header=TRUE, sep=",", na.strings="NA", dec=".", strip.white=TRUE)
data2 <- read.table("group2.csv", header=TRUE, sep=",", na.strings="NA", dec=".", strip.white=TRUE)
# 2. 为数据集添加分组标签,可根据需求修改名称
data1$group <- "组1"
data2$group <- "组2"
# 3. 合并为总数据集
all_data <- rbind(data1, data2)
# 4. 绘图
p <- ggplot(all_data, aes(x=Trial, y=Data, color=group, fill=group)) + 
  theme_bw() + 
  # 可根据两组数据的实际范围调整坐标轴
  xlim(1, 49) + 
  ylim(0.3, .95) + 
  theme(
    plot.title = element_text(color="black", size=14, face="bold.italic"),
    axis.title.x = element_text(color="Black", size=25),
    axis.title.y = element_text(color="Black", size=25),
    axis.text.x = element_text(color = "black",face = "bold", size = 22, angle = 0),
    axis.text.y = element_text(color = "black",face = "bold", size = 22, angle = 0),
    axis.line = element_line(color = "black", size = 1, linetype = "solid"),
    plot.caption = element_text(color = "black", size =11, face = "bold.italic"),
    axis.ticks.length=unit(.25, "cm"),
    # 图例样式调整,可按需修改
    legend.title = element_text(size=20, face="bold"),
    legend.text = element_text(size=18, face="bold"),
    legend.position = "top"
  ) +      
  theme(panel.border = element_blank(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank()) +
  # 置信区间图层,alpha调整透明度
  geom_ribbon(aes(ymin=Data-CI, ymax=Data+CI), alpha=0.2, color = "gray35", size = 0.1)  +
  # 折线图层
  geom_line(size=2) +
  # 自定义两组的颜色,可按需修改
  scale_color_manual(values = c("组1" = "black", "组2" = "darkblue")) +
  scale_fill_manual(values = c("组1" = "gold", "组2" = "skyblue")) +
  # 坐标轴与图例标签
  labs(x = "Trial", y = "Go probability", color = "分组", fill = "分组")
print(p)

可选简化方案

如果不需要自动生成图例,也可以直接在原有代码基础上新增第二组的图层,手动指定数据源即可:

# 读取第二组数据
data2 <- read.table("group2.csv", header=TRUE, sep=",", na.strings="NA", dec=".", strip.white=TRUE)
# 在你原有group1绘图代码的基础上新增以下两行
p <- p + 
  geom_ribbon(data = data2, aes(ymin=Data-CI, ymax=Data+CI), alpha=0.2, fill = "skyblue", color = "gray35", size = 0.1) +
  geom_line(data = data2, size=2, color="darkblue")

内容的提问来源于stack exchange,提问作者A.Rainer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 16:18:02