ggplot2:使用geom_bar绘制平均值

时间:2022-11-26 14:58:10

I have the following data frame:

我有以下数据框:

test2 <- data.frame(groups = c(rep("group1",4), rep("group2",4)), 
    X2 = c(rnorm(4), rnorm(4)) , 
    label = c(rep(1,2),rep(2,2),rep(1,2),rep(2,2)))

and I am plotting the bar graphs for each label per group using:

我正在使用以下方法绘制每组每个标签的条形图:

ggplot(test2, aes(label, X2, fill=as.factor(groups))) + 
    geom_bar(position="dodge", stat="identity")

ggplot2:使用geom_bar绘制平均值

However, I am cannot seem to be able to find a stat="mean" so I can plot the means on each bar graph instead of the identity.

但是,我似乎无法找到stat =“mean”,所以我可以在每个条形图而不是标识上绘制平均值。

Thanks for any help.

谢谢你的帮助。

3 个解决方案

#1


35  

simply use stat = "summary" and fun.y = "mean"

只需使用stat =“summary”和fun.y =“mean”

ggplot(test2) + 
  geom_bar(aes(label, X2, fill = as.factor(groups)), 
           position = "dodge", stat = "summary", fun.y = "mean")

ggplot2:使用geom_bar绘制平均值

#2


3  

ggplot2 likes 1 data point for 1 plot point. Create a new data frame with your summary statistics, then plot with stat="identity"

ggplot2喜欢1个绘图点的1个数据点。使用摘要统计信息创建新数据框,然后使用stat =“identity”进行绘图

require(reshape2)
plot.data <- melt(tapply(test2$X2, test2$groups,mean), varnames="group", value.name="mean")

 ggplot(plot.data, aes(x=group,y=mean)) + geom_bar(position="dodge", stat="identity")

ggplot2:使用geom_bar绘制平均值

#3


-1  

Try using ggpubr. It creates ggplot2-like charts.

尝试使用ggpubr。它创建了类似ggplot2的图表。

library(ggpubr)

ggbarplot(test2, x = "label", y = "X2",
          add = "mean", fill = "groups")

ggplot2:使用geom_bar绘制平均值

Alternatively, add a facet:

或者,添加一个方面:

ggbarplot(test2, x = "label", y = "X2",
          add = "mean", fill = "groups",
          facet.by = "groups")

ggplot2:使用geom_bar绘制平均值

#1


35  

simply use stat = "summary" and fun.y = "mean"

只需使用stat =“summary”和fun.y =“mean”

ggplot(test2) + 
  geom_bar(aes(label, X2, fill = as.factor(groups)), 
           position = "dodge", stat = "summary", fun.y = "mean")

ggplot2:使用geom_bar绘制平均值

#2


3  

ggplot2 likes 1 data point for 1 plot point. Create a new data frame with your summary statistics, then plot with stat="identity"

ggplot2喜欢1个绘图点的1个数据点。使用摘要统计信息创建新数据框,然后使用stat =“identity”进行绘图

require(reshape2)
plot.data <- melt(tapply(test2$X2, test2$groups,mean), varnames="group", value.name="mean")

 ggplot(plot.data, aes(x=group,y=mean)) + geom_bar(position="dodge", stat="identity")

ggplot2:使用geom_bar绘制平均值

#3


-1  

Try using ggpubr. It creates ggplot2-like charts.

尝试使用ggpubr。它创建了类似ggplot2的图表。

library(ggpubr)

ggbarplot(test2, x = "label", y = "X2",
          add = "mean", fill = "groups")

ggplot2:使用geom_bar绘制平均值

Alternatively, add a facet:

或者,添加一个方面:

ggbarplot(test2, x = "label", y = "X2",
          add = "mean", fill = "groups",
          facet.by = "groups")

ggplot2:使用geom_bar绘制平均值