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

ggplot2:如何在轴标签上方添加倍数标注

在ggplot2中为坐标轴添加外部标注(提示刻度需乘以10^n)

针对轴刻度已除以10^n、需要在轴标签上方添加提示标注的需求,以下是几种实用的实现方法:

方法1:用annotation_custom结合grid::textGrob

通过关闭绘图区域裁剪,直接在外部添加标注,精准定位到轴标签上方:

library(ggplot2)
library(grid)

# 模拟数据:原始数值除以10^3
df <- data.frame(x = 1:10, y = (1:10)*1000/1000)

p <- ggplot(df, aes(x, y)) +
  geom_point() +
  labs(y = "数值") +
  scale_y_continuous(breaks = seq(0,10,2))

# 添加y轴标签上方的标注
p + annotation_custom(
  grob = textGrob("(×10³)", gp = gpar(fontsize = 10)),
  xmin = -Inf, xmax = -Inf,
  ymin = 10.5, ymax = 10.5 # 调整y值控制垂直位置
) +
  coord_cartesian(clip = "off") # 必须关闭裁剪,否则外部元素会被隐藏

方法2:直接整合标注到轴标签

最简单的方式是把提示信息直接融入轴标签,用上标格式更规范:

# 普通文本格式
ggplot(df, aes(x, y)) +
  geom_point() +
  labs(y = "数值 (×10³)") +
  scale_y_continuous(breaks = seq(0,10,2))

# 数学表达式上标格式
ggplot(df, aes(x, y)) +
  geom_point() +
  labs(y = expression(数值 ~ (times ~ 10^3))) +
  scale_y_continuous(breaks = seq(0,10,2))

方法3:用grid::grid.text在绘图后添加文本

适合需要更灵活定位的场景,先绘制图形再手动添加标注:

p <- ggplot(df, aes(x, y)) +
  geom_point() +
  labs(y = "数值") +
  scale_y_continuous(breaks = seq(0,10,2)) +
  theme(plot.margin = margin(5.5, 5.5, 5.5, 20)) # 左侧预留标注空间

# 绘制图形
print(p)

# 添加垂直对齐的标注到y轴标签上方
grid.text("(×10³)", x = unit(0.05, "npc"), y = unit(0.5, "npc"), rot = 90)

内容的提问来源于stack exchange,提问作者Piotr Radziński

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 05:50:00