[R] Error bars on barplots

KAREN KOTSCHY karen at gecko.biol.wits.ac.za
Tue Sep 7 12:24:38 CEST 1999

Hi everyone

I've finally had a chance to look at this problem again. Thanks to 
Paul Murrell and Bendix Carstensen, putting error bars on barplots 
with single bars is quite simple, as barplot returns the x locations 
of the bar midpoints.

However... with plots where you have groups of bars (where x is a 
matrix and beside=T), it is not as simple. One can work out the x 
locations of each individual bar manually, knowing the bar width 
and the midpoint of the group. I've written a function to do this when 
there are 3 bars in a group (see below). I'm sure the R gurus out 
there could suggest a more elegant or a simpler way!

Here are my functions, for anyone else wanting to put error bars 
onto these kind of barplots. Hopefully someone might find them 

# This calculates the x locations of individual bars, where there are 
# 3 bars per group.
# Arguments: x = the vector of bar group midpoints returned by 
# barplot.

barxloc <- function(x) {
   j <- 1
   v <- c()
   for (i in 1:length(x)) {
      v[[j]] <- x[[i]] - 1
      j <- j + 1
      v[[j]] <- x[[i]]
      j <- j + 1
      v[[j]] <- x[[i]] + 1
      j <- j + 1

# This adds error bars to the plot (y+se only):
# Arguments: x = as above, means and se = matrices containing 
# the data to be plotted.

errbars <- function(x, means, se) {
   a <- barxloc(x)
   a <- unlist(a)
   arrows(a, means, a means+se, angle=90, code=2, length=0.1)


Karen Kotschy
Centre for Water in the Environment
University of the Witwatersrand

Tel: 011 716-2218
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-help-request at stat.math.ethz.ch

More information about the R-help mailing list