在R中将分组柱状图和堆叠柱状图结合起来

4
以下是我的数据框的外观:
CatA    CatB   CatC 
1        Y      A
1        N      B
1        Y      C
2        Y      A
3        N      B
2        N      C 
3        Y      A
4        Y      B
4        N      C 
5        N      A
5        Y      B

我希望在X轴上有CatA,并在Y轴上显示其数量。这张图表看起来不错。但是,我想为CatB创建一个组,并将其与保持计数的CatC堆叠在一起,在Y轴上显示。这是我尝试过的方法,以及它的外观:

enter image description here

我希望它看起来像这样:

enter image description here

我的代码:

ggplot(data, aes(factor(data$catA), data$catB, fill = data$catC)) 
+ geom_bar(stat="identity", position = "stack") 
+ theme_bw() + facet_grid( ~ data$catC)

PS:非常抱歉我只提供了图片链接,因为我无法上传它,每次上传都会在imgur上出现错误。


你的 ggplot 代码包含的数据与你之前分享的不同。 - mtoto
我刚刚缩短了数据集并绘制了一个最终的近似图表,以展示它的外观。主要问题是,需要对CatB进行分组,并将C堆叠在x轴上保持CatA,其计数在y轴上。现在我清楚了吗? - Ankur Sinha
在这种情况下,你能让你的代码保持一致吗? - mtoto
现在好一些了吗?刚刚编辑过,使其更易读。 - Ankur Sinha
1个回答

9
您可以使用Facets(聚类):
df <- data.frame(A = sample(1:5, 30, T), 
                 B = sample(c('Y', 'N'), 30, T), 
                 C = rep(LETTERS[1:3], 10))

ggplot(df) + geom_bar(aes(B, fill = C), position  = 'stack', width = 0.9) + 
  facet_wrap(~A, nrow = 1) + theme(panel.spacing = unit(0, "lines"))

enter image description here


这个非常好用。以前不知道有这些特性,使用起来简单多了。谢谢你,伙计! - Ankur Sinha
非常酷!这绝对是我见过的关于这种问题最优雅的解决方案! - Pesche Helfer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接