2013-02-26 202 views
3

從計算值分組的geom_boxplot我創建了一些分組箱形圖,基本上針對x軸上的每個維度,我顯示了各種組。因爲我的數據集非常大,所以我必須預先計算盒子的值,因爲ggplot沒有足夠的內存(我使用了ddply並且分片)。從平均值

我相信這不僅僅是平均值的條形圖,因爲它顯示了一些可變性。

我想要2個修改,一個是不顯示晶須線,我通過設置ymin = lower和ymax = upper來完成。

我也想添加一些手段,但是它們都顯示在每個X類別的中心,當然我希望它們每個都與它的盒子對齊。

,使其更容易對任何人幫助,我重新使用mtcars同一圖表 - 我想position = "dodge"和「身份」,沒有變化

任何人知道如何做到這一點?我搜查了一下,沒有找到辦法。我還附上我最新圖表的圖片。代碼如下

data(mtcars) 
data <- as.data.frame(mtcars) 
data$cyl <- factor(data$cyl) 
data$gear <- factor(data$gear) 

summ <- ddply(data, .(cyl, gear),summarize, lower=quantile(mpg,probs=0.25,na.rm=T), middle=quantile(mpg,probs=.5,na.rm=T),upper=quantile(mpg,probs=.75,na.rm=T),avg=mean(mpg,na.rm=T)) 

p2 <- ggplot(summ, aes(x = cyl, lower = lower, middle = middle, upper = upper,fill=gear,ymin=lower,ymax=upper))+geom_boxplot(stat = "identity") 
p2 <- p2 + geom_point(aes(x = cyl, y=avg, color=gear),color="red",position="dodge") 
p2 

enter image description here

+2

在你的geom_point()調用中,你需要'position = position_dodge(width = .9)'而不是position =「dodge」。 – Ista 2013-02-26 22:21:41

+0

非常感謝,畢竟它總是很容易 – user1617979 2013-02-26 22:45:58

+0

@Ista,你應該做出這樣的答案,以便OP可以接受它,並關閉問題。 – Arun 2013-03-16 15:18:54

回答

2

的問題是,該點的寬度是不一樣的箱形圖的寬度。在這種情況下,您需要告訴position_dodge使用什麼寬度。 ?position_dodge給出了一個使用點和誤差線的簡單例子,但是對於點和箱線圖原理是相同的。在你的例子中,用position=position_dodge(width=0.9)替換position="dodge"將使得點數減少與箱圖相同的數量。

+0

我真的很感激,如果@ user1617979可以通過將其標記爲已回答來關閉此問題。 – Arun 2013-03-16 16:31:29