如何在R中的分组条形图中生成堆叠条

时间:2013-09-12 21:28:49

标签: r charts ggplot2 bar-chart

我有以下图表

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)) 

我想为每个人绘制一个分组的条形图(水平),其中一个条形指示value1而另一个条形是堆栈的value2和value3。有没有办法用ggplot2做到这一点?我可以使用构面将这些单独的图形一个接一个地绘制下来吗?

1 个答案:

答案 0 :(得分:33)

以下是我提出的内容,类似于此处提出的解决方案:stacked bars within grouped bar chart

  1. 融化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"
    
  2. 绘制堆积图表cat vs value,面向person。您可能需要调整标签以获得所需内容:

    ggplot(melted, aes(x = cat, y = value, fill = variable)) + 
      geom_bar(stat = 'identity', position = 'stack') + facet_grid(~ person)
    
  3. enter image description here