gpt4 book ai didi

r - 如何将已计算的标准误差值添加到条形图 (ggplot) 中的每个条形?

转载 作者:行者123 更新时间:2023-12-04 10:15:44 26 4
gpt4 key购买 nike

我有 6 个基因,我想比较两组(对照克罗恩病和对照溃疡性结肠炎)之间的效应大小(遵循线性混合模型)。我的条形图既有阳性也有阴性,总共有 6 个基因。

这是我的数据:

structure(list(Gene1 = c(-0.017207751, 
-0.00939068, 0.007440363, 0.004574254), Gene2 = c(0.025987401,
0.025625772, 0.010239336, 0.00695056), Gene3 = c(0.018122943, 0.012997113,
0.008892864, 0.006541982), Gene4 = c(-0.022694115,
-0.009823328, 0.007286011, 0.004776522), Gene5 = c(0.031315514,
0.013967722, 0.008674407, 0.00674662), Gene6 = c(-0.016374358,
-0.009660298, 0.007140279, 0.004536602)), class = "data.frame", row.names = c("Control_Crohns",
"Control_UC", "Std.error_controlcrohns", "Std.errorr_controluc"
))

我刚刚从更大的数据集中提取了这些数据(因此希望从更大的数据集中保留标准误差)。我可以使用以下方法仅用每个基因的条形图绘制图表(我删除了上面的最后两行,并为每个组添加了 std.error 来执行此操作)。
  datframe2=data.frame(Group=rownames(data), data)


datframe.m <- melt(datframe2, id.vars = "Group")


graph <- ggplot(datframe.m, aes(x = variable, y= value, fill=Group)) +geom_bar(aes(variable, value),
stat= "identity", width=0.8, position="dodge")

graph + theme(axis.text.x=element_text(angle = 90, vjust = 0.5, hjust=1)) + xlab("Gene") +
ylab("Estimate")

但是,我不知道如何使用 geom_errorbar 使用上面的原始数据将计算出的 std.error 值添加到每个条。请有人指导我举一个例子(因为我无法找到一个他们添加已经存在的值的地方,并且这里的类似问题没有帮助)。谢谢。

最佳答案

我认为您需要 reshape 您的数据框,以使您的数据更易于在 gglot2 中使用。 .

当要将数据 reshape 为更长的格式并以多个列名称作为输出时,我更喜欢使用 melt函数来自 data.table包裹。但是您可以使用 pivot_longer 获得类似的结果函数来自 tidyr .

最后,您的数据集应如下所示:

library(data.table)
DF <- as.data.frame(t(DF))
DF$Gene <- rownames(DF)

DF.m <- melt(setDT(DF), measure = list(grep("Control_",colnames(DF)),grep("Std.error",colnames(DF))),
value.name = c("Control","SD"))

Gene variable Control SD
1: Gene1 1 -0.017207751 0.007440363
2: Gene2 1 0.025987401 0.010239336
3: Gene3 1 0.018122943 0.008892864
4: Gene4 1 -0.022694115 0.007286011
5: Gene5 1 0.031315514 0.008674407
6: Gene6 1 -0.016374358 0.007140279
7: Gene1 2 -0.009390680 0.004574254
8: Gene2 2 0.025625772 0.006950560
9: Gene3 2 0.012997113 0.006541982
10: Gene4 2 -0.009823328 0.004776522
11: Gene5 2 0.013967722 0.006746620
12: Gene6 2 -0.009660298 0.004536602

然后,您可以使用 ggplot2 轻松绘图通过使用 geom_errorbar每个基因的标准差。

library(ggplot2)

ggplot(DF.m, aes(x = Gene, y= Control, fill = as.factor(variable)))+
geom_col(position = position_dodge())+
geom_errorbar(aes(ymin = Control-SD,ymax = Control+SD), position = position_dodge(0.9), width = 0.2)+
scale_fill_discrete(name = "Disease", labels = c("Crohns", "UC"))

enter image description here

它回答了你的问题吗?

关于r - 如何将已计算的标准误差值添加到条形图 (ggplot) 中的每个条形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61067977/

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