R ggplot2分组条形图

时间:2016-03-23 18:37:11

标签: r ggplot2 bar-chart

我是ggplot2的新手但是想学习。我的数据很长,看起来像这样:

Year    School Type     Stat                Value
2011    Middle School   Tobacco Use         7.5
2011    Middle School   Cigarettes          4.3
2011    Middle School   Smokeless Tobacco   2.2
2011    Middle School   Hookahs             1
2011    Middle School   E-cigarettes        0.6
2011    High School     Tobacco Use         24.3
2011    High School     Cigarettes          15.8
2011    High School     Smokeless Tobacco   7.3
2011    High School     Hookahs             4.1
2011    High School     E-cigarettes        1.5

完整集在这里:http://pastebin.com/VUvWhC4x

我想做的是制作两张图,一张用于中学,一张用于高中。我可以轻松地将其分配到这些组中,所以让我们尝试中学。我在这里使用了一个deplry动词。

middle = as.data.frame(filter(data,School.Type=="Middle School"))

我希望图表看起来是每个统计数据都沿着x轴行进,然后年份将分别绘制成一年的行。然后继续下一个统计和同样的事情。这些年是2011-2014。它非常模拟这个图:

enter image description here

我能做的最好的就是这段代码:

ggplot(middle, aes(factor(Stat), Value, fill = factor(Year)) + 
+geom_bar(stat="identity", position = "dodge") + 
+scale_fill_brewer(palette = "Set1")

产生enter image description here

我想按照统计数据对这些进行分组,然后从2011-2014年开始对每个统计数据进行分组。有什么想法吗?

1 个答案:

答案 0 :(得分:3)

你很近 - 你希望Stat映射到x轴而Value映射到y。然后填写Year并指定应该避开条形(即并排)。

这非常接近您发布的所需输出图。

library(ggplot2)

ggplot(middle, aes(x=Stat, y=Value, fill=factor(Year))) +
  geom_bar(stat='identity', position ='dodge', color='black') +
  scale_fill_brewer(palette=1) +
  theme_classic()

enter image description here