2013-10-31 43 views
1

我明白我是如何從其他幾個帖子在一個圖中繪製多個箱形圖的。但是我有這種情況,我們無法一起繪製多個條件。我應用了與我以前的帖子(Multiple boxplots in R)相同的想法,但不適用於這種情況。R中多個條件的多個盒圖

我有這樣的數據集

 Control      Treatment 
     L1 L2 L3 L4 L5  S1 S2 S3 S4 S5  
g1 10.5 12 10 11 12  13 14 10 11 12 
g2 11  13 10 10 11  10.5 12 8 9 10 
g3 10  9 9 8 9   11 10 11 9 11 
g4 9  8 8 9 8   6  5 5 7 6 
g5 16  4 6.5 6.8 5   4  6 6 8 9 
g6 11  12 7.8 7.5 6   5  4 9 10 11 
g7 10  6 8.9 6.4 7.2  13 12 12 12 10 
g8 5  4 9.0 5.6 7.8  12 12 9 8 7 
g9 11  12 11 8.5 7.4  10 11.5 8 7 6 
g10 8.9 7.8 13 5.6 6.8  7.6 5.8 5 4 5 

,並希望代表幾個條件在同一圖表中的多個盒形圖。

我想做第一個比較治療中第一個從對照到S1和S2的區域,第二個區域比較從對照到S3,S4,S5在治療中的L2和L3,第三個區域與L4和L5比較S4和S5在治療中。

這個多重條件boxplot可能如何?或者我應該分別製作這些箱形圖,然後將它們放在同一個圖表中?

回答

3

我不確定這是你在找什麼,但它需要一點點的數據處理。

如果您想在(L1,S1,S2 | L2,L3,S3,S4,S5 | L4,L5,S4,S5)的第四列(即「Group2」)中手動輸入分組,您需要複製S4行,並將它們放入適當的組中。然後,你就會改變:

facet_wrap(~ Group2, scales = 'free') 

-

library(ggplot2) 
library(reshape2) 

control <- ## read in control data 
control$group <- rep('control', nrow(control)) 
control <- melt(control, id.vars = 'group') 

treatment <- ## read in control data 
treatment$group <- rep('treatment', nrow(treatment)) 
treatment <- melt(treatment, id.vars = 'group') 

allData <- rbind(control, treatment) 

ggplot(allData, aes(x = variable, y = value, group = variable)) + 
    geom_boxplot() + 
    facet_wrap(~ group, scales = 'free') 

enter image description here

- 更新 -

library(gdata) 
library(reshape2) 
library(ggplot2) 

control <- ## read in control data 
control$group <- rep('control', nrow(control)) 
control <- melt(control, id.vars = 'group') 

treatment <- ## read in treatment data 
treatment$group <- rep('treatment', nrow(treatment)) 
treatment <- melt(treatment, id.vars = 'group') 

allData <- rbind(control, treatment) 

compA <- subset(allData, 
       variable == 'L1' | 
       variable == 'S1' | 
       variable == 'S2') 
compB <- subset(allData, 
       variable == 'L2' | 
       variable == 'L3' | 
       variable == 'S3' | 
       variable == 'S4' | 
       variable == 'S5') 
compC <- subset(allData, 
       variable == 'L4' | 
       variable == 'L5' | 
       variable == 'S4' | 
       variable == 'S5') 

allData <- combine(compA, compB, compC) 

ggplot(allData, aes(x = variable, y = value, group = variable, fill = group)) + 
    geom_boxplot() + 
    facet_wrap(~ source, scales = 'free_x') 

enter image description here

+0

這是做它的一種方式,但我想到了比較L1與S1,S2和L2,L3與S3,S4,S5和L4,L5與S4,S5都在同一個圖中。 – Paul

+1

我想我知道你現在要做什麼。我們可以通過一個填充變量傳遞組(控制或處理)來突出顯示。我必須照顧一些東西,但大約一個小時後我可以再拍一張照片。感謝您接受我的回答! – maloneypatr