I’m trying to create a faceted plot using ggplot and geom_errorbar. However, each different facet may have have vastly different x ranges, and so the width of the error bar isn’t looking “good”. Here’s a MWE:
library(ggplot2)
test <- data.frame( group=rep(c(1,2,3),each=10), ymin=rnorm(30), ymax=rnorm(30))
test$x <- rnorm(30) * (1+(test$group==1)*20)
ggplot( test, aes(x=x, ymin=ymin, ymax=ymax) ) +
geom_errorbar(width=5) + facet_wrap( ~ group, scale="free_x" )
ggplot( test, aes(x=x, ymin=ymin, ymax=ymax) ) +
geom_errorbar(width=.2) + facet_wrap( ~ group, scale="free_x" )
In the first plot, the error bars for group 1 look great, but 2 and 3 are far too wide. In the second plot, the error bars are way too small for group 1. Is there an easy way to fix this? I’m thinking I might just have to use width=0, but I’d like to avoid that.


Workaround for this problem would be to add to your data frame new column
wdthat contains width of the errorbars for each level.Then use this new column to set
width=ingeom_errorbar(). It should be set inside theaes()call.