微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

用Ggplot2分组的均值汇总条形图

如何解决用Ggplot2分组的均值汇总条形图

我觉得我缺少一些非常基本的东西,但是任何建议都值得赞赏。

我有一个包含19个变量的大型数据集,包括类别变量和数字变量。我想生成一个图表,其中三个变量(因为它们共享一个单位)平均且按因子排列。伪造样本数据:

Sex    Low Freq      High Freq      Bandwidth
M       3000         4011           1011
M       3000         3600           600 
M       2790         4237           1447
F       2700         3300           500
F       2900         4517           617
F       2813         3857           1044

我尝试过:

ggplot(TripleSongAverages,aes(x=factor(Sex),y='Low Freq','High Freq','Bandwidth')) + stat_summary(fun.y="mean",geom="bar") 

但这只会生成带有第一个变量的图。

解决方法

我建议使用tidyverse方法重塑数据并计算平均值。这里的代码:

library(tidyverse)
#Data
df <- structure(list(Sex = c("M","M","F","F"),Low.Freq = c(3000,3000,2790,2700,2900,2813),High.Freq = c(4011,3600,4237,3300,4517,3857),Bandwidth = c(1011,600,1447,500,617,1044
)),class = "data.frame",row.names = c(NA,-6L))

代码:

#Reshape data and plot
df %>% pivot_longer(cols = -Sex) %>%
  group_by(Sex,name) %>%
  summarise(Mean=mean(value,na.rm=T)) %>%
  #Plot
  ggplot(aes(x=factor(Sex),y=Mean,fill=name)) +
  geom_bar(stat='identity',position = position_dodge(0.9)) 

输出:

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。