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

R语言ggplot2绘制预测散点并添加月度实际值红线红点

R ggplot2 多预测值对应单实际值散点图实现方法

核心实现逻辑

现有代码已经完成了带精度等级着色、横向抖动的预测值绘制,只需要新增两个独立图层标注实际值即可,注意不要让实际值图层继承预测值的精度等级颜色映射,避免着色混乱。

完整可运行代码

library(ggplot2)
# 提取每月唯一实际值,避免重复绘制
real_value_subset <- unique(df[, c("date", "real_value")])

ggplot(df, aes(x = date, y = pred_value, color = factor(acc_level))) +
  # 原有预测值抖动散点层
  geom_point(size = 2, alpha = 0.7, position = position_jitter(w = 0.1, h = 0)) +
  # 绘制实际值红色水平短标识线,长度和抖动范围匹配
  geom_segment(
    data = real_value_subset,
    aes(
      x = as.numeric(date) - 0.1,
      xend = as.numeric(date) + 0.1,
      y = real_value,
      yend = real_value
    ),
    color = "red",
    linewidth = 1,
    inherit.aes = FALSE
  ) +
  # 绘制实际值红色标记点,放在上层更醒目
  geom_point(
    data = real_value_subset,
    aes(x = date, y = real_value),
    color = "red",
    size = 3,
    shape = 18,
    inherit.aes = FALSE
  ) +
  # 可选:优化图例和坐标轴标签
  labs(
    x = "统计月份",
    y = "指标数值",
    color = "预测精度等级\n(数值越小精度越高)"
  ) +
  theme_bw()

关键参数说明

  • 提前用unique()提取去重的月度实际值子集,避免同一个月的实际值被重复绘制多次
  • 新增的实际值图层必须设置inherit.aes = FALSE,否则会继承顶层的color=acc_level映射,无法固定显示为红色
  • 短标识线的左右范围设为分类轴坐标±0.1,和设置的抖动宽度w=0.1完全对齐,视觉效果更协调
  • 实际值点选用菱形样式(shape=18)、更大的尺寸,和圆形的预测值点做明确区分,辨识度更高
  • 将acc_level转为因子型,让颜色映射按离散分类处理,符合精度等级的分类属性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 09:57:17