14

次のグラフがあります

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

1 つのバーが value1 を示し、もう 1 つのバーが value2 と value3 のスタックである、グループ化された棒グラフ (水平) を各人にプロットしたいと考えています。ggplot2 を使用してこれを行う方法はありますか? ファセットを使用して、これらの個々のグラフを上下にプロットできますか?

4

1 に答える 1

45

ここで提案されている解決策と同様に、私が思いついたのは次のとおりです。グループ化された棒グラフ内の積み上げ棒

  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. 積み上げグラフcatvsをプロットしvalue、 でファセットしpersonます。必要なものを取得するには、ラベルを調整する必要がある場合があります。

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

ここに画像の説明を入力

于 2013-09-12T21:57:07.070 に答える