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