2016-04-15 78 views
0

我有一組實驗在10個階段或幾個月完成。我正在種植3種不同類型的細菌並計數生長(ACC)。有或沒​​有ggplot2的多面分組boxplot r

我試圖獲得一個facet_wrap分組箱形圖的三種細菌類型(A,E和H)的不同階段的增長。我的數據:

head(EAH) 
    ACC sample site bed phase X.M.SA TYPE 
1 SG  A 1 0  1  NO E 
2 SG  A 2 0  1  NO A 
3 MG  A 3 0  1  NO H 
4 SG  A 4 0  1  NO A 
5 LG  A 1 0  2  NO E 
6 LG  A 2 0  2  NO H 

不某些原因而一些有代表性的數據:

EAH<- data.frame(ACC=factor(sample(1:5,10,replace=T), label=c("NG","SG","LG","MG","GH")), 
       Phase=factor(seq(1,10,1)), 
       TYPE=factor(sample(1:3,10,replace=T), label=c("A","E","S"),replace=T)) 

我想GGPLOT2但如果這是可以做到不沒關係了。

ggplot(EAH, aes(x=as.factor(EAH$phase), y=EAH$ACC, group=EAH$TYPE)) + 
    geom_boxplot(aes(fill=factor(EAH$TYPE)))+ facet_grid(. ~ as.factor(EAH$phase)) 

這裏是我到目前爲止管理,但它不能得到面:

enter image description here

有點像第3圖下來對這個職位看起來很不錯: ggplot: arranging boxplots of multiple y-variables for each group of a continuous x

編輯

新代碼是接近,但我有將ACC更改爲數字。我能否在Y軸上獲得NG,SG,LG,MG,HG的標籤?

ggplot(EAH, aes(x=TYPE, y=as.numeric(ACC))) + 
    geom_boxplot(aes(fill=TYPE))+ facet_grid(. ~ phase) 

enter image description here

最終代碼:

library(RColorBrewer) 
library(ggplot2) 
ggplot(EAH, aes(x=TYPE, y=as.numeric(ACC))) + 
    geom_boxplot(aes(fill=TYPE))+ 
    facet_grid(. ~ phase) + 
labs(x = "Phase", y = "Growth",color="Type")+ 
scale_fill_brewer(palette="Blues")+ 
theme_bw()+ 
theme(strip.background=element_rect(fill="black"))+ 
theme(strip.text=element_text(color="white", face="bold"))+ 
scale_y_discrete(breaks=c("1", "2", "3","4","5"), 
        labels=c("NG", "SG", "LG","MG","HG")) 

和Result: enter image description here

+0

這是一個常見問題解答。你已經告訴ggplot2在哪裏尋找變量。不要使用EAH $! – Roland

+0

謝謝你看這個。我已經嘗試了至少10個不同的ggplot代碼,主要來自於stackoverflow,但沒有爲我工作。我無法理解這個錯誤的含義:layout_base(data,cols,drop = drop)中的錯誤: 至少有一個圖層必須包含所有用於構造的變量。另外爲什麼我不應該使用EAH $!? – HCAI

回答

1

GGPLOT2使用非標準的評價。它查找傳遞給其參數data的data.frame中的變量。所以你可以簡單地這樣做:

ggplot(EAH, aes(x=Phase, y=ACC)) + 
    geom_boxplot(aes(fill=TYPE))+ facet_grid(. ~ Phase) 

當然,R是區分大小寫的。

+0

非常感謝您的示例,我非常感謝。我將它改爲:ggplot(EAH,aes(x = TYPE,y = as.numeric(ACC)))+ geom_boxplot(aes(fill = TYPE))+ facet_grid(._ phase)拆分,但因爲我不得不使ACC數字,我看不到yaxis上的水平(請參閱我的文章中的編輯)。你怎麼看? – HCAI

+0

箱線圖必須具有數值y軸(並且必須基於數值)。你所展示的沒有盒子。事實上,我無法理解你的情節。 – Roland

+0

R將增長水平(無增長,不足增長等)轉換爲數值1,2,3等來繪製它們。 boxplot是否顯示這種類型的數據是錯誤的方式?本質上,我有一個序數分類y軸... – HCAI