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

ggplot散点回归图中为非样本点的实际、预测值添加美观标注

适配需求的极简标注实现方案

方案1:同色就近直标(无引线、代码量最少)

直接让文本颜色与对应数据点保持一致,微调文本位置避免遮挡数据点,无需额外装饰,视觉识别度最高。
在原有绘图代码末尾追加如下代码即可:

+
  geom_text(aes(x=2.5, y=23.92395, label="模型预测值\nmpg≈23.92"),
            color="red", hjust=-0.1, size=4) +
  geom_text(aes(x=2.5, y=28, label="实际观测值\nmpg=28"),
            color="darkgreen", hjust=-0.1, size=4)

参数说明:

  • hjust=-0.1:将文本向x轴正方向偏移10%的字宽,完全不会遮挡核心数据点
  • 文本颜色与对应点完全一致,读者可快速建立点与标签的关联,无需额外引线
  • 原代码使用的亮绿色在白色绘图背景下对比度偏低,替换为深绿色可大幅提升辨识度

方案2:黑字带背景标签(适配密集图场景)

如果数据点区域密度较高,可采用黑色文本搭配白色不透明背景框的形式,解决深色区域下文字可读性差的问题;当两个点垂直距离较近、标签容易重叠时,可搭配简单引线区分标签位置,无需引入额外绘图包。

基础带背景标签版本

+
  geom_label(aes(x=2.5, y=23.92395, label="模型预测值"),
             fill="white", color="black", hjust=1.2, size=4) +
  geom_label(aes(x=2.5, y=28, label="实际观测值"),
             fill="white", color="black", hjust=-0.2, size=4)

带引线防遮挡版本

+
  # 绘制引线连接标签与对应数据点
  geom_segment(aes(x=2.5, xend=2.62, y=23.92, yend=23.92),
               color="red", linewidth=0.6) +
  geom_segment(aes(x=2.5, xend=2.38, y=28, yend=28),
               color="darkgreen", linewidth=0.6) +
  # 放置带白色背景的黑色文本标签
  geom_label(aes(x=2.65, y=23.92, label="模型预测值"),
             fill="white", color="black", size=4) +
  geom_label(aes(x=2.35, y=28, label="实际观测值"),
             fill="white", color="black", size=4)

图例统一优化技巧

原有代码中单独指定点颜色、手动开启图例的写法容易导致图例映射混乱,可通过整合样本外点数据,在美学映射层统一绑定颜色与标签属性,自动生成整齐图例,避免手动维护映射的繁琐:

# 整理样本外点的属性信息
outlier_info <- data.frame(
  wt = c(2.5, 2.5),
  mpg = c(23.92395, 28),
  type = c("模型预测值", "实际观测值")
)

# 完整可运行绘图逻辑
ggplot(mtcars, aes(x=wt, y=mpg)) +
  geom_point(alpha=0.7) +
  geom_smooth(method="lm", se=FALSE) +
  # 统一绘制样本外点,自动生成匹配颜色的图例
  geom_point(data=outlier_info, aes(color=type), size=3) +
  # 标注文本自动匹配对应图例颜色
  geom_text(data=outlier_info, aes(x=wt, y=mpg, label=type, color=type),
            hjust=-0.1, size=4)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.22 18:06:02