次のグラフがあります
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を使用してこれを行う方法はありますか?ファセットを使用して、これらの個々のグラフを上下にプロットできますか?
ここで私が思いついたのは、ここで提案された解決策に似ています: グループ化された棒グラフ内の積み上げ棒
メルト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
とvalue
をperson
でファセットしてプロットします。必要に応じてラベルを調整する必要がある場合があります。
ggplot(melted, aes(x = cat, y = value, fill = variable)) +
geom_bar(stat = 'identity', position = 'stack') + facet_grid(~ person)