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

如何让经vjust调整垂直位置的ggplot2 geom_label()文本居中

ggplot2 geom_label 内部文本偏移修复方案

问题原因

直接使用vjust参数调整标签整体位置时,该参数会同时作用于标签框的位置锚点和标签内部文本的对齐规则,最终导致内部文本出现非预期的偏移。

修复方案

方案1(推荐):使用nudge_y调整标签位置

将位置调整和文本对齐逻辑拆分,nudge_y仅负责整体向上移动标签,不影响内部文本对齐规则,vjust、hjust保持默认值即可保证文本居中。
修改后的完整代码如下:

library(ggplot2)

Factor <- c('A', 'B')
Y <- c(5, 10)

DF <- data.frame(Factor, Y)

ggplot(data = DF,
       aes(x = Factor,
           y = Y)) +
  geom_col() +
  geom_label(aes(label = Y),
             nudge_y = 1, # 可自定义数值调整标签与柱子顶部的间距
             size = 3) +
  scale_y_continuous(limits = c(0, 15))

方案2:显式指定文本对齐参数

如果需要保留vjust参数调整位置的写法,可额外显式设置对齐参数强制内部文本居中:

library(ggplot2)
library(grid) # 若label.padding参数报错可加载该包

Factor <- c('A', 'B')
Y <- c(5, 10)

DF <- data.frame(Factor, Y)

ggplot(data = DF,
       aes(x = Factor,
           y = Y)) +
  geom_col() +
  geom_label(aes(label = Y),
             vjust = -1,
             hjust = 0.5, # 强制水平居中
             label.padding = unit(0.2, "lines"), # 调整标签内边距避免文本挤压
             size = 3) +
  scale_y_continuous(limits = c(0, 15))

内容的提问来源于stack exchange,提问作者Daniel Valencia C.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 00:48:02