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:
par(mar=c(5,4,4,4)) barp(rbind(y1,y2),names.arg=c(0,1.5,3),col=2:3, legend.lab=c("y1","y2")) If you really want to have two y axes, you could add: axis(4) If you want to inflate your y2 values so that they look comparable to the y1 values, you could do this: barp(rbind(y1,y2*5),names.arg=c(0,1.5,3),col=2:3, legend.lab=c("y1","y2")) axis(2,col=2) axis(4,at=seq(0,15,by=3),labels=0:5,col=3) but as others have mentioned, it is not a very good idea. Jim ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.