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

为何ggplot2中相同字号的文本标注与坐标轴文字显示大小不一致

问题核心原因

ggplot2两类文本的字号单位不统一,导致数值相同但显示大小不同:

  • annotate("text")、geom_text()等绘图层文本的size参数单位为毫米
  • theme()中element_text()定义的主题文本(坐标轴文本、标题等)的size参数单位为磅(pt)

二者换算关系为:1 pt ≈ 0.352778 mm,因此同样设为10的情况下,标注文本会远大于坐标轴文本。

解决方法

若要让标注文本和10pt的坐标轴文本大小一致,将所有annotate函数中的size = 10替换为size = 10 * 0.352778(或直接取近似值size = 3.53)即可。

修改后的代码片段示例:

geom_line(lwd = 1) +
geom_point()+
scale_color_manual(values = c("dodgerblue1","green4", "orchid2", "orangered"))+
scale_x_continuous(breaks = seq(0, 6, 1))+
scale_y_continuous(breaks = seq(0, -0.004, -0.0006))+
# 所有annotate的size参数调整为3.53
annotate(geom = "text", x = 1, y = -1.885727e-03, label = "*", vjust = -0.5, size = 3.53, family = "sans", fontface = "plain")+
annotate("text", x = 2, y = -3.355709e-03, label = "*", vjust = -0.5, size = 3.53, family = "sans")+
annotate("text", x = 3, y = -3.e-03, label = "*", vjust = -0.52, size = 3.53, family = "sans")+
annotate("text", x = 3, y = 0, label = "a", size = 3.53, family = "sans")+
annotate("text", x = 4, y = -2.237154e-03, label = "*", vjust = -0.5, size = 3.53, family = "sans")+
annotate("text", x = 5, y = -3.177662e-03, label = "a", vjust = -2.25, size = 3.53, family = "sans")+
annotate("text", x = 5, y = -8.320587e-04, label = "b", vjust = -1, size = 3.53, family = "sans")+
annotate("text", x = 5, y = -1.314674e-03, label = "ab", hjust = 1.2, size = 3.53, family = "sans")+
annotate("text", x = 5, y = -1.251930e-03, label = "b", vjust = -0.3, hjust = -0.4, size = 3.53, family = "sans")+
annotate("text", x = 6, y = -3.010294e-03, label = "a", vjust = -1, size = 3.53, family = "sans")+
annotate("text", x = 6, y = -1.298422e-03, label = "ab", vjust = 2.5, size = 3.53, family = "sans")+
annotate("text", x = 6, y = -1.025298e-03, label = "b", hjust = -0.1, size = 3.53, family = "sans")+
annotate("text", x = 6, y = -7.609683e-04, label = "b", vjust = -0.75, size = 3.53, family = "sans")+
annotate("text", x = 6, y = -0.004, label = "A", size = 3.53, family = "sans")+
# 主题部分不变,axis.text仍保持size=10
theme(panel.grid.major = element_blank(),
      panel.grid.minor = element_blank(),
      panel.background = element_blank(),
      strip.background = element_rect(colour = NA, fill = NA),
      panel.border = element_rect(fill = NA, color = "black"),
      axis.text = element_text(family = "sans", color = "black", size = 10),
      axis.title.x = element_blank(),
      axis.title.y = element_blank(),
      legend.position = ("none"),
      text=element_text(size=10))+
geom_errorbar(aes(ymin=Respiration-se, ymax=Respiration+se), width=.5,
              position=position_dodge(0.00))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 00:27:01