> plot(6:25,rnorm(20),type="b",xlim=c(1,30),ylim=c(-2.5,2.5),col=2) > par(new=T) > plot(rnorm(30),type="b",axes=F,col=3) > par(new=F)
Notice how extra space was left in case the second series had a greater range than the first. The example also shows how to "line up" the series if they don't have the same x range by specifying an explicit X range in the first plot.
If you only want to add series of points/lines that have the same x and y
ranges, points()
or lines()
will do the job
> plot(rnorm(100),type="l",col=2) > lines(rnorm(100),col=3)
If the first data series plotted has a smaller range than subsequent ones, you
will have to include a ylim=
argument on the first plot to fit them
all in:
> yrange<-range(c(datavector1,datavector2,datavector3)) > plot(datavector1,type="l",ylim=yrange,col=2) > lines(datavector2,type="l",col=3) > ...
> upvar<-rnorm(10)+seq(1,1.9,by=0.1) > downvar<-rnorm(20)*5+19:10 > par(mar=c(5,4,4,4)) > plot(6:15,upvar,pch=1,col=3,xlim=c(1,20),xlab="Occasion",ylab="",main="Dual ordinate plot") > mtext("upvar",side=2,line=2,col=3)
That's the first plot, with green circles showing the data points and a green
label on the y axis to identify the ordinate for them. The call to
par()
adds space for two extra lines on the right side of the plot,
which we'll need for the ticks and labels.
> abline(lm(upvar~I(1:10)),col=3)
The I()
term in the formula is necessary to prevent
lm()
from generating an error. Now we've got a plot with green
circles and a green line showing the regression of upvar
on
observation index.
> par(new=T) > plot(downvar,axes=F,xlab="",ylab="",pch=2,col=4) > axis(side=4) > abline(lm(downvar~I(1:20)),col=4) > mtext("downvar",side=4,line=2,col=4)
First, there's another call to par()
that allows us to plot the
second set of data without erasing the first plot. The second plot is without
axes and labels, so that they don't get mixed up with the first plot. After
adding the second axis on the right side and plotting the regression line for
downvar
, mtext()
is used to put the variable name next
to the right ordinate. Because we overlaid a new plot, we didn't have to use
ylim=
to fit the two ranges together.
xlim=
was used to line up the occasions correctly.
For more information, see An Introduction to R: High level plotting commands.