如何将使用 geom_label() 制作的标签的文本居中,其垂直位置已被 vjust 更改? (ggplot2 包)
Posted
技术标签:
【中文标题】如何将使用 geom_label() 制作的标签的文本居中,其垂直位置已被 vjust 更改? (ggplot2 包)【英文标题】:How to center the text of a label made with geom_label() whose vertical position was changed with vjust? (ggplot2 package) 【发布时间】:2021-12-01 04:15:27 【问题描述】:我用ggplot2
包和geom_col()
函数绘制了列。我使用geom_label()
函数在每列的顶部放置了一个标签,其中包含相应的值。在 geom_label()
函数中,我修改了文本大小 (size = 3
) 和标签位置 (vjust = -1
),但结果显示标签位于所需位置,但文本偏离中心。
我该如何解决这个问题?
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),
vjust = -1,
size = 3) +
scale_y_continuous(limits = c(0, 15))
【问题讨论】:
【参考方案1】:我建议使用nudge_y
,而不是通过vjust
(或hjust)移动标签。
library(ggplot2)
Factor <- c('A', 'B')
Y <- c(5, 10)
DF <- data.frame(Factor, Y)
p <- ggplot(data = DF,
aes(x = Factor,
y = Y)) +
geom_col() +
scale_y_continuous(limits = c(0, 15))
p + geom_label(aes(label = Y), nudge_y = 1, size = 3)
第二种选择是使用ggtext::geom_richtext
,它允许在数据点和标签之间添加一些边距:
p + ggtext::geom_richtext(aes(label = Y), vjust = 0, size = 3, label.margin = unit(5, "pt"))
【讨论】:
以上是关于如何将使用 geom_label() 制作的标签的文本居中,其垂直位置已被 vjust 更改? (ggplot2 包)的主要内容,如果未能解决你的问题,请参考以下文章
R语言ggplot2使用geom_label()函数添加文本标签的一些操作