[R] How to get two y-axises in a bar plot?

Jim Lemon jim at bitwrit.com.au
Wed Jan 30 09:54:17 CET 2008

Gustaf Granath wrote:
> Hi,
> I have measured two response variables (y1, y2) at each treatment level 
> (x = 0, 1.5 or 3). Now I would like to show the y1 and y2 against x in a 
> bar plot. However, y1 and y2 differ in scale so I need two y-axises, one 
> on the left side and one on the right side (and I dont want to 
> standardize my responses). This is fairly easy if you want to show 
> points,lines etc, but gets more complicated with bars.Although these 
> kind of bar graphs are quite common, I have found very limited 
> information about how to do them in R. I have been struggling with the 
> barplot() command. My problem is that the bars for y1 and y2 end up at 
> the same place (blocking each other) and not beside each other when I 
> use par(new=TRUE). Is there a way to separate them so y1 and y2 are 
> placed beside each other at each x level, or is this easier to do this 
> with lattice?? I would also like to add error bars but I guess that 
> should not be a problem.
Hi Gustaf,
You can get a reasonable display like this:


If you really want to have two y axes, you could add:


If you want to inflate your y2 values so that they look comparable to 
the y1 values, you could do this:


but as others have mentioned, it is not a very good idea.


More information about the R-help mailing list