2017-10-23 15 views
-3

セル内のカウントされた数値を持つ2x2のコンティンジェンシーテーブルがある場合、どのように積み重ねられた割合でグループ化された棒グラフを得ることができますか?ここでggplot - 2x2テーブル用のグループ化されたバープロット

は、サンプルコード

specie=c(rep("sorgho" , 1) , rep("poacee" , 1) ) 
condition=rep(c("normal" , "stress") ,1) 
value=abs(rnorm(4 , 0 , 4)) 
data2=data.frame(specie,condition,value) 

library(ggplot2) 

# Stacked Percent 
ggplot(data2, aes(fill=condition, y=value, x=specie)) + 
    geom_bar(stat="identity", position="fill") 

あるしかし、私のデータは次のようになります。

 A B 
Group C 4 5 
     D 1 2 

プロットは、私に教えてください:Aの割合は、グループCには何であるのか?グループDのBのパーセンテージは?

ありがとうございました。

+0

あなただけの適切なフォーマットにデータを変換する必要があります。 –

+0

[積み重ね棒グラフの割合を棒グラフで計算する方法](https://stackoverflow.com/questions/43212067/how-to-calculate-percentages-in-a-stacked-barplot-bar-wise ) – Ashish

答えて

1

このようなものをお探しですか?

library(reshape2) 
library(ggplot2) 
data <- matrix(c(4, 1, 5, 2), ncol = 2, dimnames = list(c("C", "D"), c("A", "B"))) 
data_m <- melt(data, varnames = c("Exp", "Obs"), id.vars = "Exp") 

ggplot(data_m %>% group_by(Exp) %>% 
      mutate(perc = round(value/sum(value),2)), 
     aes(x = Exp, y = perc, 
      fill = Obs, cumulative = TRUE)) + 
    geom_col() + 
    geom_text(aes(label = paste0(perc*100,"%")), 
       position = position_stack(vjust = 0.5)) 

enter image description here

+0

ラブリー!それが私の言いたいことです。どうもありがとう。あなたはあなたのコードにライブラリ(dplyr)を追加することができますか? – Kamu

関連する問題