Deepayan Sarkar wrote:
On Friday 17 October 2003 02:20, Martin Maechler wrote:
"PaulSch" == Schwarz, Paul <[EMAIL PROTECTED]> on Wed, 15 Oct 2003 12:09:11 -0700 writes:
PaulSch> I am converting some S-PLUS scripts that I use for PaulSch> creating manuscript figures to R so that I can take PaulSch> advantage of the plotmath capabilities. In my PaulSch> S-PLUS scripts I like to use the key() function for PaulSch> adding legends to plots,
AFAIK key() in S+ is from the trellis library section. The corresponding R package, trellis, has
^^^^^^^ lattice, actually :-)
a draw.key() function that may work similarly to S-plus' key() {Deepayan ?}.
That's correct. Of course, the S-PLUS key() works wih non-trellis graphs as well, whereas draw.key() will produce a grid object and hence work with grid graphics only. (I haven't checked Paul's new gridBase package, that may enable using this for base graphics as well.)
gridBase makes it possible, although it takes a little bit of work. Here's a simple example.
## First a standard base plot (mangled example from lattice):
data(OrchardSprays) attach(OrchardSprays) tmt <- sort(as.numeric(treatment)) dec <- decrease[order(as.numeric(treatment))] row <- rowpos[order(as.numeric(treatment))] plot(tmt, dec, type="n") for (i in unique(row)) { subset <- row == i lines(tmt[subset], dec[subset], col=i) }
## Now load lattice (to produce the key) and gridBase (to combine the ## lattice key with the base plot):
library(lattice) library(gridBase)
## Align grid viewports with base plot:
par(new=TRUE) vps <- baseViewports() push.viewport(vps$inner, vps$figure, vps$plot)
## Create lattice key:
key <- draw.key(list(lines = list(col=1:8), text = list(lab=as.character(unique(OrchardSprays$rowpos))), columns = 4, title = "Row position", background=par("bg"), border=TRUE))
## Use a grid viewport to position the key 3mm in from the top-left ## corner of the plot (NOTE this doesn't quite work properly -- the ## width and height of the key are not calculated correctly ## [Deepayan: It's an error in grid and I'm working on a fix]):
push.viewport(viewport(x=unit(3, "mm"), y=unit(1, "npc") - unit(3,"mm"), width=unit(1, "grobwidth", key), height=unit(1, "grobheight", key), just=c("left", "top"))) grid.draw(key) # This just shows where the viewport is # and shows how it is too big for the key grid.rect(gp=gpar(col="grey"))
## Clean up:
pop.viewport(4)
Paul -- Dr Paul Murrell Department of Statistics The University of Auckland Private Bag 92019 Auckland New Zealand 64 9 3737599 x85392 [EMAIL PROTECTED] http://www.stat.auckland.ac.nz/~paul/
______________________________________________ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help