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

如何用ggplot在Y轴同时绘制fit.mean等三个拟合变量?

在ggplot中同时绘制拟合均值、置信区间与观测值

完全可以实现,下面提供两种常用的实现思路,根据你想要的可视化效果选择:

方式一:用填充区域展示置信区间(推荐,更直观)

这种方式会用浅色填充表示95%置信区间的范围,叠加拟合均值线和观测值点,适合突出拟合结果的不确定性:

首先加载必要的包:

library(ggplot2)

假设你的数据框有对应的X轴变量(比如时间、分组等),如果没有可以用行号代替,然后直接分层绘制:

# 先给数据添加X轴(如果没有的话)
df$x <- seq(nrow(df))

ggplot(df, aes(x = x)) +
  # 绘制95%置信区间的填充区域
  geom_ribbon(aes(ymin = fit.0.025quant, ymax = fit.0.975quant), 
              fill = "#63b6e5", alpha = 0.3) +
  # 绘制拟合均值线
  geom_line(aes(y = fit.mean), color = "#1f77b4", linewidth = 1) +
  # 绘制原始观测值点
  geom_point(aes(y = Y), color = "#ff7f0e", size = 2) +
  # 自定义标签和主题
  labs(x = "X轴名称", y = "数值", 
       title = "观测值、拟合均值与95%置信区间") +
  theme_minimal()

方式二:用多线展示所有统计量

如果想把拟合均值、上下分位数和观测值都以线条或点的形式展示,可以先把数据转成长格式,再统一映射颜色:

需要用到tidyr包处理数据:

library(ggplot2)
library(tidyr)

# 添加X轴并转换数据为长格式
df_long <- df %>%
  mutate(x = seq(nrow(df))) %>%
  pivot_longer(cols = starts_with("fit"), 
               names_to = "统计量", values_to = "数值")

ggplot() +
  # 绘制拟合相关的三条线
  geom_line(data = df_long, aes(x = x, y = 数值, color = 统计量)) +
  # 叠加观测值点
  geom_point(data = df, aes(x = x, y = Y, color = "观测值"), size = 2) +
  # 自定义颜色映射
  scale_color_manual(values = c("fit.mean" = "#1f77b4", 
                                "fit.0.025quant" = "#7f7f7f", 
                                "fit.0.975quant" = "#7f7f7f", 
                                "观测值" = "#ff7f0e")) +
  labs(x = "X轴名称", y = "数值", color = "数据类型",
       title = "观测值与拟合统计量对比") +
  theme_minimal()

注意事项

  • 如果你的数据已有现成的X轴变量(比如time或group),直接替换代码中的x即可
  • 颜色、填充透明度、线条粗细等都可以根据需求调整

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 19:27:31