ggplot 中的 Geom_errorbar 未显示正确的标准错误

问题描述

我想在我的 geom_col ggplot 中添加误差线。误差条确实添加到我的图中,但误差条不正确。有人可以帮我弄清楚如何调整我的代码吗?我认为 y 值是错误的。它可能不应该是长度,而是我的数据框中“数字”的实际值。 如果这是一个非常简单的问题,我深表歉意,我是 R 的新手。 提前致谢。

enter image description here

number_of_sprout <- data.frame(
  Condition = c("RBP7 KO","RBP7 KO","Ctrl","Ctrl"),Number = c(8,11,17,18,13,16,4,9,12,15,8,7,6,10,19,14,7),timepoint = c(24,24,48,48)
)


sph1 <- ggplot(data = number_of_sprout,aes(x = factor(timepoint,ordered = TRUE),y=Number,fill = Condition)) +
  stat_summary(fun = mean,geom = "col",position = position_dodge()) +
  scale_fill_manual(values = c("slategray4","thistle3")) +
  geom_point(position = position_dodge(width = 0.9)) +
    labs(x = "Hours",y = "Number of sprouts") +
    theme_classic() +
    ggtitle("Spheroids - Donor 37") +
    theme_bw() +
    theme(text=element_text(family="Times New Roman",face="bold")) +
    theme(aspect.ratio = 1.5/1)

se5 <- function(y) sd(y)/length(y)   # to calculate standard error in the mean
sph1+stat_summary(geom="errorbar",position=position_dodge(width=0.9),fun.data=function(y)c(ymin=mean(y)-se5(y),ymax=mean(y)+se5(y)),width=0.2)

解决方法

我假设您只是对平均值的标准误使用了错误的公式。我已经将它保存在我的个人实用程序包中,所以我不需要查看它 - 在某些时候从 this thread 厚颜无耻地偷走了。

另一个注意事项,也许检查http://data-to-viz.com/caveat/error_bar.html 更一般的警告为什么误差线可能不理想(如果你绘制整个数据,一般来说不是很有必要)

# replace your function
se5 <- function(x,na.rm=FALSE) {
  if (na.rm) x <- na.omit(x)
  sqrt(var(x)/length(x))
}  # to calculate standard error in the mean
sph1+stat_summary(geom="errorbar",position=position_dodge(width=0.9),fun.data=function(y)c(ymin=mean(y)-se5(y),ymax=mean(y)+se5(y)),width=0.2)

,

作为不同的答案 - 不同的主题。您是否考虑过对配对数据进行不同形式的可视化?我会将其显示为关系散点图,第一个度量在 x 轴上,第二个在 y 轴上。

如您所见,通过这种方式,两个测量值之间的关系更加清晰可见,而且与条形图相比,您还可以更好地看到差异(或本例中的相似性)。

library(tidyverse)
number_of_sprout <- data.frame(
 Condition = c("RBP7 KO","RBP7 KO","Ctrl","Ctrl"),Number = c(8,11,17,18,13,16,4,9,12,15,8,7,6,10,19,14,7),timepoint = c(24,24,48,48)
)
number_of_sprout %>%
 pivot_wider(names_from = timepoint,values_from = Number,names_prefix = "t",values_fn = list) %>%
 unnest(c(t24,t48)) %>%
ggplot(aes(t24,t48)) +
 geom_abline(intercept = 0,slope = 1,color = "grey") +
 geom_point(aes(color = Condition)) +
 scale_color_brewer(palette = "Set1",direction = -1) +
 coord_equal(xlim = c(0,NA),ylim = c(0,NA)) +
 cowplot::theme_cowplot()

reprex package (v2.0.0) 于 2021 年 4 月 29 日创建