2013-02-26 212 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