legend --> buglet in plot setup + legend()'s S/R incompatibility
Martin Maechler
Martin Maechler <maechler@stat.math.ethz.ch>
Tue, 15 Dec 1998 18:15:11 +0100
Thank you Paul;
One could argue that it is your fault, calling legend() without a
preceding plot in that figure. Help says ``add legends to plots''
However, I agree
this *is* a buglet somewhere.
Look at this [which is your code ++ ]
x11()
par(mfcol = c(2, 1), mar = c(5.1, 6.1, 4.1, 2.1), ask = TRUE)
(u <- par("usr"))
for(do.box in c(FALSE,TRUE)) {
matplot(matrix(1:30,15,2), type="l", lty=1:2)
par(mfg = c(2, 1, 2, 1))
print(u <- par("usr"))
if(do.box)
box()
legend(u[1:2], u[3:4], c("a","b"), lty = 1:2, col=1:2, bty = "y")
}
##--> The first time, the legend is not properly done;
## the second time, after "box()" it is!
---> You can use this as a workaround for the moment:
Use
box(col = 0)
which gives an invisible box and makes subsequent legend(.) work okay!
---
However, I assume you won't get what you want and what S-plus does:
S: in legend(x,y,...) , if x & y of length 2, they specify opposite CORNERS
whereas in R, they always specify just one point
we have something like
if(length(x) > 1) { x <- mean(x); y <- mean(y) ; ...... }
That point is determined by xjust/yjust and defaults to the left-upper corner:
In R, the size and placing of the legend's box
is determined ``automagically'', using
x.intersp, y.intersp, cex & text.width.
Maybe we need a way to circumwent the automatic legend-box size computation...
---
Martin
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-devel mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !) To: r-devel-request@stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._