2016-07-05 69 views
2

最近我學會了使用stat_summary像下面errorbars柱狀圖。GGPLOT2條形圖與幾個分類變量與同級別

library(ggplot2) 
posn.d <- position_dodge(1.82) 
ggplot(mtcars, aes(x=cyl, y=wt, col = factor(am), fill = factor(am)))+ 
     stat_summary(fun.y = mean, geom = "bar", position = posn.d)+ 
     stat_summary(fun.data = mean_se, fun.args = list(mult = 1), geom = "errorbar", width = 0.1, position =posn.d) 

enter image description here

但我想說的是有些不同。 對於具有相同級別的組類別,有多於兩個變量。

(例如, 組: 「選項A」, 「選項B」, 「選項C」

水平爲每個組:0,1)

實施例的數據:

mtcars$OptionA=sample(0:1, 32, replace = T) 
mtcars$OptionB=sample(0:1, 32, replace = T) 
mtcars$OptionC=sample(0:1, 32, replace = T) 
mtcars 

我想提出這樣一個情節: enter image description here

我可以這樣有R的陰謀? 任何幫助將是偉大的。謝謝:)

回答

0

我認爲你必須繪製前準備好您的數據。具體地,由於OptionAOptionBOptionC具有相同的值,則可以創建一個變量option那將它們合併所有然後創建一個可變value與所有可能的值(0或1)。翻譯成代碼,它可能是這樣的:

library(dplyr) 
library(tidyr) 

test = mtcars %>% select(mpg, OptionA:OptionC) 

#present your test in long format 
test_long <- gather(test, option, value, OptionA:OptionC) 

> head(test_long) 
    mpg option value 
1 21.0 OptionA  0 
2 21.0 OptionA  0 
3 22.8 OptionA  0 
4 21.4 OptionA  0 
5 18.7 OptionA  0 
6 18.1 OptionA  1 

然後你就可以創建你bar_plot呈現mpgoptionvalue

#plot 
a = ggplot(test_long, aes(option, mpg, fill = value)) + 
    geom_bar(position = "dodge", stat="identity") 
a 

填充輸出爲:enter image description here

我希望它幫助。

+1

非常感謝。它幫助了很多! :) – Amy

+0

@Amy,不客氣。我想你可以很容易地在上面的代碼中添加'stat_summary'。 – Edu