2012-11-14 100 views
0

我正在努力從數據框中繪製箱形圖。我有一個數據幀df,其中包含3列:df$Adf$Bdf$C。我想要在X軸上有df$C,並且在一個圖中Y軸上繪製df$Adf$B作爲箱形圖。因此,對於x軸的每個值,它應該是兩個值df$Adf$B。我希望盒子對齊X軸的每個值(df$C)。我曾嘗試使用互動結合(AB)在列,然後繪製這樣說:ggplot2 boxplot對齊繪製一個圖形

df$AandB <- interaction(df$A, df$fB) 

ggplot(aes(y = AandB, x = df$C), data = df) + geom_boxplot() 

,但沒有奏效。它向我展示了只有水平線 - 對不起,我無法上傳圖像,因爲我是新用戶。

我發現一些建議使用填充或顏色,但它沒有奏效。

有什麼建議嗎?

樣品我的DF的:

A   B   C 
200.12 30.11  28.75 
100.75 26.17  29.98   
27.33  25.58  34.98 
25.19  22.6  35.56 
40.03  21.02  37.51 
20.3  18.31  44.75 
+0

請提供有關您的數據的其他信息。 str(df)'的輸出是什麼?你能提供'dput(df)'的輸出嗎? –

+0

我已經包括輸出DF! – SimpleNEasy

+0

在您的示例數據中,'C'的每個唯一值對於'A'和一個值'B'只有一個值。你在找什麼樣的盒子? –

回答

1

數據:

df <- read.table(text="A   B   C 
200.12 30.11  28.75 
100.75 26.17  29.98   
27.33  25.58  34.98 
25.19  22.6  35.56 
40.03  21.02  37.51 
20.3  18.31  44.75", header = TRUE) 

首先,數據需要被安排在長格式。 AB的值與reshape2包一起組合在一列中。現在

library(reshape2) 
df_l <- melt(df, id.vars = "C") 

,可以創建情節:

library(ggplot2) 
ggplot(df_l, aes(x = C, y = value)) + 
    stat_summary(aes(group = C), 
       fun.y = mean, fun.ymin = min, fun.ymax = max, geom = "crossbar") 

橫杆表示兩者的範圍,數據的平均值。 enter image description here

+0

看來你在一個盒子裏繪製了A&B。我一直在尋找每個單獨的C值,兩個框:一個用於A,另一個用於B彼此(offset = 0)。因此,我期望上述數據每兩個12盒(盒A和盒B)將映射到C值。另外,我需要爲每個趨勢(A,B)添加圖例和顏色。爲了減少框之間的偏移,我想我可以使用geom_jitter(geom_jitter(position = position_jitter(width = 0)))。 – SimpleNEasy