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

Sud*_*dhi 9 charts r bar-chart ggplot2

我有以下图表

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)) 
Run Code Online (Sandbox Code Playgroud)

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

Vic*_* K. 35

以下是我提出的建议,类似于此处提出的解决方案:分组条形图中的堆叠条形图

  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"
    
    Run Code Online (Sandbox Code Playgroud)
  2. 绘制堆积图表catvalue面对面person.您可能需要调整标签以获得所需内容:

    ggplot(melted, aes(x = cat, y = value, fill = variable)) + 
      geom_bar(stat = 'identity', position = 'stack') + facet_grid(~ person)
    
    Run Code Online (Sandbox Code Playgroud)

在此输入图像描述