[R] Problems with segments and multiple graphs
Uwe Ligges
ligges at statistik.uni-dortmund.de
Thu Dec 5 13:52:02 CET 2002
Ross Darnell wrote:
>
> I would like to create a page of two graphs (2 rows by 1 col) and then
> draw vertical lines (segments?) on both graphs from the minimum
> values to the corresponding maximum value.
>
> So I have tried
>
> #
> > y <- rnorm(3000)
> > par(mfrow=c(2,1))
> > plot(y,type="l")
> > plot(cumsum(y),type="l")
> > segments(1000,min(cumsum(y)),1000,max(cumsum(y)))
> > par(mfg=c(1,1))
> > segments(1000,min(y),1000,max(y))
> > y <- rnorm(3000)
>
> The segment looks fine on the bottom graph but I get a small vertical
> line on the top graph. The max(y) value looks OK but the min(y) looks
> like the second largest value.
>
> > ymin <- min(y)
> > ymax <- max(y)
> > segments(1000,ymin,1000,ymax)
>
> doesn't make any difference.
OK. The par settings won't be resetted completely, but you can do so
manually:
y <- rnorm(3000)
par(mfrow=c(2,1))
plot(y,type="l")
rpar <- par() # remember par settings
plot(cumsum(y),type="l")
segments(1000,min(cumsum(y)),1000,max(cumsum(y)))
par(rpar) # restore the settings to draw the line
par(mfg=c(1,1))
segments(1000,min(y),1000,max(y), col="red")
In your case it is simpler to complete each plot before stepping to the
next one.
> Can I draw a (one) line that crosses both graphs?
Yes. A simple but rather ugly solution:
par(xpd = NA)
abline(v = 1000)
Uwe Ligges
More information about the R-help
mailing list