如何在ggplot2中制作多条形图?

时间:2011-08-20 20:39:38

标签: r ggplot2

我在ggplot2上苦苦挣扎,并希望通过示例学习更多。

我有很多数据看起来像这样生成的东西:

data.frame(version=c('v1', 'v1', 'v1', 'v1', 'v2', 'v2', 'v2', 'v2'),
           platform=c('linux', 'linux', 'mac', 'mac',
                      'linux', 'linux', 'mac', 'mac'),
           type=c('a', 'b', 'a', 'b', 'a', 'b', 'a', 'b'),
           count=floor(runif(8, 0, 10000)))

我定期barplot为我绘制一个给定操作系统的堆积条形图(通过用cast切片,但是我还没有得到我想要的ggplot2。

我可以设法通过这样的方式绘制单个平台(假设上面的内容保存为sample):

qplot(version, a, data=cast(sample[sample$platform=='linux',],
                            version ~ type, value="count"),
      geom='bar')

理想情况下,我希望按类型堆叠(在此示例中显式为a - 只有两种类型)然后每个平台有一个并排显示在按版本分组的同一图表上

也就是说,对于每个版本,我都想要三个条形图(每个平台一个条形图),每个条形图有两个堆栈(按类型)。

1 个答案:

答案 0 :(得分:6)

这是一个选项:

dat <- data.frame(version=c('v1', 'v1', 'v1', 'v1', 'v2', 'v2', 'v2', 'v2'),
           platform=c('linux', 'linux', 'mac', 'mac',
                      'linux', 'linux', 'mac', 'mac'),
           type=c('a', 'b', 'a', 'b', 'a', 'b', 'a', 'b'),
           count=floor(runif(8, 0, 10000)))


ggplot(data = dat, aes(x = platform, y = count)) + 
    facet_wrap(~version) + 
    geom_bar(aes(fill = type))

产生类似这样的东西:

enter image description here

您的示例数据只有两个平台,所以也许这只是一个错字,因为您引用了三个。