r - 在ggplot中调整文本在错误栏上方的位置

标签 r ggplot2 geom-bar

我有以下数据框:

df <- structure(list(Gender = c("M", "M", "M", "M", "F", "F", "F", 
"F"), HGGroup = structure(c(1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L), .Label = 
c("Low: \n F: <11.5, M: <12.5", 
"Medium: \n F: > 11.5 & < 13, M: >12.5 & < 14.5", "High: \n F: >= 13, M >= 
14.5", "No data"), class = "factor"), MeanBlood = c(0.240740740740741, 
1.20689655172414, 0.38150289017341, 0.265957446808511, 0.272727272727273, 
1.07821229050279, 0.257309941520468, 0.288776796973518), SEBlood = 
c(0.0694516553311722, 0.154646785911315, 0.0687932999815165, 
0.0383529942166715, 0.0406072582435844, 0.0971802933392401, 
0.0327856332532931, 0.0289636037703526), 
N = c(108L, 116L, 173L, 376L, 319L, 179L, 342L, 793L)), row.names = c(NA, 
-8L), class = c("tbl_df", "tbl", "data.frame"))

我有以下命令来绘制每组的均值和置信区间:

ggplot(df, aes(x = Gender, y = MeanBlood, colour = Gender)) + 
geom_errorbar(aes(ymin = MeanBlood - SEBlood*qnorm(0.975), ymax = MeanBlood 
+ SEBlood*qnorm(0.975)), width = 0.3, stat = "identity") +
geom_point(size = 3) + facet_grid(~HGGroup) + theme(legend.position = 
"none") + 
geom_text(aes(label = N, x = Gender), vjust = -5)

我试图让文本正好位于错误栏的顶部,但它需要在每个组中位于不同的位置,而且目前看起来很奇怪。

我认为问题源于这样一个事实,即每个组的置信区间长度不同,因此恒定的理由是行不通的 - 它必须与下四分位数相关。

有什么建议吗?

最佳答案

这似乎有效,你的标签的y,如你所愿,不是aes中设置的y ggplot,而是ymax:

ggplot(df, aes(x = Gender, y = MeanBlood, colour = Gender)) + 
  geom_errorbar(aes(ymin = MeanBlood - SEBlood*qnorm(0.975), ymax = MeanBlood 
                    + SEBlood*qnorm(0.975)), width = 0.3, stat = "identity") +
  geom_point(size = 3) + facet_grid(~HGGroup) + theme(legend.position = 
                                                        "none") + 
  geom_text(aes(y = MeanBlood + SEBlood*qnorm(0.975), label = N, x = Gender), vjust = -1)

如果将 ymax 移动到 ggplot 调用,其他层将能够访问它,因此无需重新定义它:

ggplot(df, aes(x = Gender, y = MeanBlood, colour = Gender, 
               ymin = MeanBlood - SEBlood*qnorm(0.975), ymax = MeanBlood 
               + SEBlood*qnorm(0.975))) + 
  geom_errorbar(aes(width = 0.3), stat = "identity") +
  geom_point(size = 3) + facet_grid(~HGGroup) + theme(legend.position = 
                                                        "none") + 
  geom_text(aes(y = stat(ymax), label = N, x = Gender), vjust = -1)

关于r - 在ggplot中调整文本在错误栏上方的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52917664/

相关文章:

r - 在ggplot2中的图例的某些级别之间添加线条

r - 从共享通用 aes 名称的两层生成的图例中删除一个 aes

r - 更改一个堆叠条的字体颜色

r - 如何在 fiddle 图上显示 mustache 和点?

r - ggplot2正负值不同颜色渐变

使用 gsub 删除 R 中的奇数字符

r - 使用 grid.arrange 更改 multiplot ggplot2 中的多行标题

减少 ggplot2 中条形图组之间的空间

对图中重叠的条形重新排序,以便较长的条形位于后面 -R

r - tidyr::unite 的数据表版本