2011-10-24 39 views
3

我有兩組數據(x1和x2與y1和y2),我希望顯示爲兩組箱形圖。如何顯示兩組箱形圖?

我嘗試以下,但它顯示了錯誤的數據,因爲向量x1和x2(Y1和Y2)是不一樣的長度:

x1 <- c(2,3,4) 
x2 <- c(0,1,2,3,4,5) 

y1 <- c(3,4,5) 
y2 <- c(1,2,3,4,5,6) 

d0 <- matrix(c(x1, x2), ncol=2) 
d1 <- matrix(c(y1, y2), ncol=2) 

lmts <- range(d0,d1) 

par(mfrow = c(1, 2)) 
boxplot(d0, ylim=lmts, xlab="x") 
boxplot(d1, ylim=lmts, xlab="y") 

這就是它顯示了(當然,我想第一個箱線圖的須走2〜4相反,根據)X1的範圍等:

drawn

+1

有你輸入d0和d1?他們真的是你想要的嗎? – nzcoops

回答

3

是啊,或者你也可以使用。

lmts <- range(x1,x2,y1,y2) 
par(mfrow = c(1, 2)) 
boxplot(x1, x2, ylim=lmts,names=c("x1","x2"),xlab="x") 
boxplot(y1, y2, ylim=lmts,names=c("y1","y2"),xlab="y") 

enter image description here

在沒有根據的評論的完整邊......

> quantile(c(2,3,4), type=1) 
    0% 25% 50% 75% 100% 
    2 2 3 4 4 
> quantile(c(2,3,4), type=2) 
    0% 25% 50% 75% 100% 
    2 2 3 4 4 
> quantile(c(2,3,4), type=3) 
    0% 25% 50% 75% 100% 
    2 2 3 3 4 
> quantile(c(2,3,4), type=4) 
    0% 25% 50% 75% 100% 
2.00 2.00 2.50 3.25 4.00 
> quantile(c(2,3,4), type=5) 
    0% 25% 50% 75% 100% 
2.00 2.25 3.00 3.75 4.00 
> quantile(c(2,3,4), type=6) 
    0% 25% 50% 75% 100% 
    2 2 3 4 4 
> quantile(c(2,3,4), type=7) 
    0% 25% 50% 75% 100% 
2.0 2.5 3.0 3.5 4.0 
> quantile(c(2,3,4), type=8) 
     0%  25%  50%  75%  100% 
2.000000 2.166667 3.000000 3.833333 4.000000 
> quantile(c(2,3,4), type=9) 
    0% 25% 50% 75% 100% 
2.0000 2.1875 3.0000 3.8125 4.0000 
+0

+1,我本人即將發佈此解決方案。請注意,這兩種方法會產生不同的結果!我認爲這可能是因爲他們如何對待N/A項目,但我不確定。 –

+0

嗯,有趣的點本。添加了一張圖片來顯示不同之處。我認爲你在NA評論中處於正確的軌道。考慮到我們使用的矢量沒有NAs等,這在這個方法中不是問題。 – nzcoops

+0

是的,在Tukey情節中刷新我的記憶,框的邊界應該在第25和第75百分位。對於3個數據點,分別將2/3和3/4點分開(對於x)。對於5個數據點,其中兩個是N/A,我不確定如何「正確」計算。編輯添加:實際上,我甚至不確定沒有NA的3個數據點的「正確」百分位數是多少,現在我再考慮一下。 –

1

另一種選擇是使用GGPLOT2包。您需要更多工作才能將數據放入一個數據框中。但是,這很容易。

library(ggplot2) 
dataset <- data.frame(
    Group = c(rep("x1", length(x1)), rep("x2", length(x2)), rep("y1", length(y1)), rep("y2", length(y2))), 
    Subplot = c(rep("x", length(x1) + length(x2)), rep("y", length(y1) + length(y2))), 
    Value = c(x1, x2, y1, y2)) 
ggplot(dataset, aes(x = Group, y = Value)) + geom_boxplot() + facet_wrap(~Subplot, scales = "free_x") 

enter image description here