2012-11-19 37 views
1

我試圖通過因素並排繪製箱形圖時遇到問題。我讀過幾個例子,但由於某些原因,我的地塊顯示不正確。我認爲它試圖爲每個值繪製箱形圖,即使我將其指定爲一個因子。Boxplot因素問題

我用下面的代碼:

samp.norm = rnorm(1000,0,1) 
samp.exp = rexp(1000,1) 
samp.unif = runif(1000) 
samp = c(samp.norm,samp.exp,samp.unif) 
dist = c(rep("norm",1000), rep("exp",1000), rep("unif",1000)) 
DATA = as.data.frame(cbind(samp,dist)) 
DATA$dist= as.factor(DATA$dist) 
p = ggplot(DATA, aes(x=factor(DATA$dist), y = DATA$samp)) + geom_boxplot() 
p 

回答

3

的問題是你的cbind()使用脅迫所產生的對象,這樣數據$ SAMP是一個因素,而不是數字。由cbind產生的列需要具有相同的類,這意味着它們在本例中是「字符」的最低常見demoninator類。這正是發明要解決的數據幀。

嘗試

DATA=data.frame(samp,dist) 

,而不是你有更復雜的線條,這一切應該工作。

順便說一句,你還應該有更簡單的

p=ggplot(DATA, aes(x=dist, y = samp)) + geom_boxplot() 

,而不是你的倒數第二行。一旦你指定了ggplot(),你正在使用DATA,你不需要告訴它在哪裏找到dist和samp,即不需要DATA $ dist,只需dist。另外,因爲dist已經是一個因素,所以您不需要指定因子(dist)。

+0

謝謝!現在有道理。我一定在一路上遇到了一些糟糕的R編程習慣。 – Jonathan

0

+1 to @PeterEllis。需要注意的是,你還可以得到比他的建議,甚至簡單的搭配:

boxplot(samp~dist) 

enter image description here