2013-01-19 93 views
1

我對使用ggplot2完全陌生,但聽說它有很棒的繪圖功能。我有一份不同樣本的清單,並根據三種儀器對每個樣本進行觀察。我想把它變成一個有箱形圖的人物。我不能包含一個數字,但是下面包含了構成示例圖的代碼。這個想法是每臺儀器都有一個帶有每個樣品盒形圖的圖。使用ggplot2的箱線圖

另外,在圖的旁邊,我想製作一個給每個樣本號命名的圖例。我不知道如何開始使用ggplot2來做這件事。

任何幫助將不勝感激

的R-代碼產生的例子形象是:

#Make data example 
Data<-list(); 
Data$Sample1<-matrix(rnorm(30),10,3); 
    Data$Sample2<-matrix(rnorm(30),10,3); 
Data$Sample3<-matrix(rnorm(30),10,3); 
    Data$Sample4<-matrix(rnorm(30),10,3); 

#Make the plots 
par(mfrow=c(3,1)) ; 
boxplot(data.frame(Data)[seq(1,12,by=3)],names=c(1:4),xlab="Sample number",ylab="Instrument 1"); 
boxplot(data.frame(Data)[seq(2,12,by=3)],names=c(1:4),xlab="Sample number",ylab="Instrument 2"); 
boxplot(data.frame(Data)[seq(3,12,by=3)],names=c(1:4),xlab="Sample number",ylab="Instrument 3"); 

回答

7

首先,你要設置不同的數據了:作爲一個data.frame,而不是矩陣列表。您需要一列sample,一列爲instrument,另一列爲觀察到的value。這裏有一個假的數據集:

df <- data.frame(sample = rep(c("One","Two","Three","Four"),each=30), 
       instrument = rep(rep(c("My Instrument","Your Instrument","Joe's Instrument"),each=10),4), 
       value = rnorm(120)) 

> head(df) 
    sample instrument  value 
1 One My Instrument 0.08192981 
2 One My Instrument -1.11667766 
3 One My Instrument 0.34117450 
4 One My Instrument -0.42321236 
5 One My Instrument 0.56033804 
6 One My Instrument 0.32326817 

要獲得三個地塊,我們將使用刻面。爲了獲得boxlot,我們使用geom_boxplot。代碼如下所示:

ggplot(df, aes(x=sample,y=value)) + 
    geom_boxplot() + 
    facet_wrap(~ instrument, ncol=1) 

enter image description here

而不是包括樣品數的傳說,如果你直接把名字中採樣變量,將打印出來的陰謀之下。這樣人們就不必爲名字引用數字:立刻清楚每個劇情的樣本是什麼樣的。請注意,ggplot默認按字母順序排列因子;如果你想要一個不同的順序,你必須手動改變它。

+1

認真嗎? OP基本上說,「我甚至沒有試圖在ggplot2中做到這一點,告訴我怎麼做!」你有義務嗎?真? – joran

+0

@joran是的。爲什麼這會讓你感到不安? –

+1

因爲本網站的明確要求之一是OP至少有一個誠意嘗試解決自己的問題。 SO不是一個可以從「零開始」教程中獲得的地方。 – joran