tags:

views:

741

answers:

3

Does anybody know of a way of generating a boxplot in R with a line (or another symbol) in the value corresponding to the mean?

Thank you!

+8  A: 

Check chart.Boxplot from package PerformanceAnalytics. It lets you define the symbol to use for the mean of the distribution.

alt text

gd047
+8  A: 
abline(h=mean(x))

for a horizontal line (use v instead of h for vertical if you orient your boxplot horizontally), or

points(mean(x))

for a point. Use the parameter pch to change the symbol. You may want to colour them to improve visibility too.

Note that these are called after you have drawn the boxplot.

If you are using the formula interface, you would have to construct the vector of means. For example, taking the first example from ?boxplot:

boxplot(count ~ spray, data = InsectSprays, col = "lightgray")
means <- tapply(InsectSprays$count,InsectSprays$spray,mean)
points(means,col="red",pch=18)

If your data contains missing values, you might want to replace the last argument of the tapply function with function(x) mean(x,na.rm=T)

James
Could you explain how this can be done in the first example of the boxplot {graphics} help for example?boxplot(count ~ spray, data = InsectSprays, col = "lightgray")
Brani
I've added it to the answer as an example now
James
+3  A: 

With ggplot2:

p<-qplot(spray,count,data=InsectSprays,geom='boxplot')
p<-p+stat_summary(fun.y=mean,shape=1,col='red',geom='point')
print(p)
Jyotirmoy Bhattacharya