gpt4 book ai didi

r - 在ggplot中垂直对齐星号(星星)

转载 作者:行者123 更新时间:2023-12-05 05:17:57 32 4
gpt4 key购买 nike

在 ggplot 中,我想用星号 ('*') 标记一些误差条以指示显着性水平。该图在 y 轴上排列有类别标签,因此它们很容易辨认。这意味着误差条是水平的,* 需要与它们垂直对齐。但是,符号“*”并未在一行文本中垂直居中,因此使用 geom_text 时它被绘制得过高。

可重现的例子

set.seed(123)
x = data.frame(grp = LETTERS[1:8], val = sample(10,8))
se = runif(8, 0.1,2)
x$upper = x$val + se
x$lower = x$val - se
x$labs = sample(c('*','**', '***', ''), 8, T)

gg = ggplot(x, aes(grp,val)) +
geom_point() +
geom_errorbar(aes(ymax = upper, ymin=lower), width=0.3) +
scale_y_continuous(limits = c(-2,12)) +
coord_flip()

gg + geom_text(aes(y=upper+0.2, label=labs), size=8, hjust='left')

enter image description here

我知道我可以像这样微调标签位置:

gg + geom_text(aes(y=upper+0.2, label=labs), size=8, nudge_x = -0.2, hjust='left')

然而,获取正确的 nudge_x 值需要以特定的方式完成,并且正确的值随着图形输出的大小、字体大小、y 尺度上的类别数量等而变化.有没有办法让标签自动垂直对齐?我尝试使用 geom_point 和 shape=42 而不是 geom_text 来绘制星号。虽然这解决了垂直对齐问题,但它引入了自己的问题,即让水平行的星号之间的间距正确(即让'**'和'***'以相邻符号之间的正确分隔打印)。

最佳答案

只是在我的机器上观察了一下,看起来这个 vjust 调整似乎起作用了,我认为它可能对设备输出大小、字体大小等的变化相当稳健。

gg + geom_text(aes(y=upper+0.2, label=labs), size=8, hjust='left',vjust = 0.77)

关于r - 在ggplot中垂直对齐星号(星星),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48552611/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com