如何在R中分组barchart中产生堆叠条 [英] How to produce stacked bars within grouped barchart in R
问题描述
我有以下图表
test <- data.frame(person=c("A", "B", "C", "D", "E"),
value1=c(100,150,120,80,150),
value2=c(25,30,45,30,30) ,
value3=c(100,120,150,150,200))
我想为每个人绘制一个分组barchart其中一个条表示value1,另一个条是value2和value3的堆叠。有没有办法,我可以使用ggplot2做到这一点?我可以使用facet来绘制这些单独的图形一个在另一个之下吗?
I want to plot a grouped barchart (horizontal) for each person where one bar indicates value1 and the other bar is stack of value2 and value3. Is there a way with which I can do this using ggplot2? Can I use facets to plot these individual graphs one below the other?
推荐答案
这里是我想出来的,类似这里提出的解决方案:组合条形图中的堆叠条
Here is what I came up with, similar to a solution proposed here: stacked bars within grouped bar chart
-
Melt
data.frame
并添加新列cat
library(reshape2) # for melt
melted <- melt(test, "person")
melted$cat <- ''
melted[melted$variable == 'value1',]$cat <- "first"
melted[melted$variable != 'value1',]$cat <- "second"
绘制一个堆叠图表 cat
vs value
,由 person
您可能需要调整标签以获得所需的内容:
Plot a stacked chart cat
vs value
, faceting by person
. You may need to adjust the labels to get what you want:
ggplot(melted, aes(x = cat, y = value, fill = variable)) +
geom_bar(stat = 'identity', position = 'stack') + facet_grid(~ person)
/ li>
这篇关于如何在R中分组barchart中产生堆叠条的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!