如何获得按因子分组的多个变量并排的条形图 [英] How to get a barplot with several variables side by side grouped by a factor

查看:23
本文介绍了如何获得按因子分组的多个变量并排的条形图的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个数据集,如下所示.我正在尝试使用分组变量性别制作一个条形图,所有变量并排在 x 轴上(按性别分组为不同颜色的填充物),以及 y 轴上变量的平均值(基本上代表百分比)

I have a dataset which looks like this one below. I am trying to make a barplot with the grouping variable gender, with all the variables side by side on the x axis (grouped by gender as filler with different colors), and mean values of variables on the y axis (which basically represents percentages)

tea                coke            beer             water           gender
14.55              26.50793651     22.53968254      40              1
24.92997199        24.50980392     26.05042017      24.50980393     2
23.03732304        30.63063063     25.41827542      20.91377091     1   
225.51781276       24.6064623      24.85501243      50.80645161     1
24.53662842        26.03706973     25.24271845      24.18358341     2   

最后我想得到这样的条形图

In the end I want to get a barplot like this

任何建议如何做到这一点?我进行了一些搜索,但我只找到了 x 轴上因子的示例,而不是按因子分组的变量.任何帮助将不胜感激!

any suggestions how to do that? I made some searches but I only find examples for factors on the x axis, not variables grouped by a factor. any help will be appreciated!

推荐答案

您可以使用聚合来计算均值:

You can use aggregate to calculate the means:

means<-aggregate(df,by=list(df$gender),mean)
Group.1      tea     coke     beer    water gender
1       1 87.70171 27.24834 24.27099 37.24007      1
2       2 24.73330 25.27344 25.64657 24.34669      2

去掉 Group.1 列

Get rid of the Group.1 column

means<-means[,2:length(means)]

然后您将数据重新格式化为长格式:

Then you have reformat the data to be in long format:

library(reshape2)
means.long<-melt(means,id.vars="gender")
  gender variable    value
1      1      tea 87.70171
2      2      tea 24.73330
3      1     coke 27.24834
4      2     coke 25.27344
5      1     beer 24.27099
6      2     beer 25.64657
7      1    water 37.24007
8      2    water 24.34669

最后,您可以使用 ggplot2 来创建您的绘图:

Finally, you can use ggplot2 to create your plot:

library(ggplot2)
ggplot(means.long,aes(x=variable,y=value,fill=factor(gender)))+
  geom_bar(stat="identity",position="dodge")+
  scale_fill_discrete(name="Gender",
                      breaks=c(1, 2),
                      labels=c("Male", "Female"))+
  xlab("Beverage")+ylab("Mean Percentage")

这篇关于如何获得按因子分组的多个变量并排的条形图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆