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

如何在R的ggplot绘图中为右侧Y轴添加目标值标签?

在ggplot右侧Y轴添加目标值标签的实现方法

要在你的折线图右侧Y轴添加目标值(16)的标签,有两种简洁实用的实现方法,以下是具体代码和说明:

方法一:创建右侧辅助轴标记目标值

通过sec_axis生成右侧辅助Y轴,仅保留目标值的标签,适配你的需求:

library(dplyr)
library(ggplot2)

df <- data.frame(
  group_val = c(rep('Class A', 10), rep('Class B', 10)),
  x_val = c(seq(1,10), seq(1,10)),
  y_val = c(3,5,4,6,8,11,10,9,8,12,
            6,2,3,6,8,10,12,14,16,8)
)

goal <- 16

df %>%
  ggplot(aes(x=x_val, y=y_val, group=group_val, color=group_val)) +
  geom_line() +
  theme(legend.position="bottom",
        legend.title = element_blank(),
        # 隐藏右侧轴的刻度线和轴线,仅保留标签
        axis.ticks.y.right = element_blank(),
        axis.line.y.right = element_blank()) + 
  geom_hline(yintercept = goal, linetype="dashed") +
  # 添加右侧辅助Y轴,仅显示目标值标签
  scale_y_continuous(
    sec.axis = sec_axis(
      ~.,  # 与左侧轴刻度保持一致
      breaks = goal,  # 仅在目标值位置显示刻度点
      labels = paste("Goal:", goal)  # 自定义标签文本
    )
  )

关键说明:

  • sec_axis(~., ...):设置右侧轴与左侧轴使用完全相同的数值转换
  • breaks = goal:指定仅在目标值位置生成刻度
  • 主题设置中隐藏了右侧轴的冗余元素,只保留目标标签

方法二:直接标注文本到右侧Y轴位置

如果不需要额外的轴元素,可直接用annotate在右侧边缘添加文本:

df %>%
  ggplot(aes(x=x_val, y=y_val, group=group_val, color=group_val)) +
  geom_line() +
  theme(legend.position="bottom",
        legend.title = element_blank()) + 
  geom_hline(yintercept = goal, linetype="dashed") +
  # 在右侧Y轴对应位置添加目标标签
  annotate(
    "text",
    x = Inf,  # 定位到图表最右侧边缘
    y = goal,
    label = paste("Goal:", goal),
    hjust = 1.2,  # 调整文本与轴的间距,避免重叠
    vjust = 0.5
  )

关键说明:

  • x = Inf 将文本固定在图表右侧
  • hjust = 1.2 让文本稍微靠右,保证与Y轴有合理间距
  • 这种方法更轻量化,无需创建辅助轴

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 16:48:24