Dan Kelley wrote:
I am trying to plot two things on one graph, with a y-axis at the left for
one variable, and a y-axis at the right, for the other variable.  I thought
I could do as follows


par(mar=rep(4.5, 4))
plot(0:10, 10:20)
par(new=TRUE)
plot(0:10, 100:110, axes=FALSE)
axis(4)


but this writes both y-axis labels on the left-hand side, and nothing on the
right-hand side.  This is R 2.8.1 (2008-12-22) on OS-X.

Am I missing something?
PS. I know that I can just make ylab="" and draw the right-hand axis name
with mtext, but that then I would need to check par(mgp), to find where
place it, etc.  I'm thinking that I am just missing something in my
understanding.


axis() doesn't draw axis labels. There isn't a simple function for drawing text on side 4 as far as I know, but mtext is not so bad: use

mtext("Right label", side=4, line=3)

to emulate the default ylab, but put it on the right. See ?title for more details if you've changed the default locations.

I don't like to use plot(new=TRUE), because there are lots of things that can go wrong when you overplot high level graphics (I'd use points() instead), but your example is one of the few cases where you can make just as many errors using points() as using par(new=TRUE). Are you really sure you want a graph with two different scales on it?

Duncan Murdoch

______________________________________________
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.

Reply via email to