[R] lattice draw.key(): position of key in panels

Boris.Vasiliev at forces.gc.ca Boris.Vasiliev at forces.gc.ca
Tue Jan 25 22:22:18 CET 2011

Good afternoon,

I am working on a plot that requires custom legends to be placed in some
panels of the plot; other panels do not contain legends.  The problem
that I run into is positioning of the legend in individual panels. In
particular, the 'x' and 'y' elements of the key-list are ignored by
draw.key() when it is called from inside a panel function.  As a result,
the legend is placed in the middle of the panel.  The example below
illustrates this problem.

df <- data.frame(x=c(1,1),y=c(1,2),type=c("A","B"))

panel.xyplot.x <- function(...) {
  # draw data

  # create key-list
  pnlid <- panel.number()
  lbl <- ifelse(pnlid==1,"AA","BB")
  pts <- Rows(trellis.par.get("superpose.symbol"),pnlid)
  key <- list(points=pts,text=list(lbl),x=0.1,y=0.9,corner=c(0,1))

  # draw key

oltc <- xyplot(y~x|type,data=df,panel=panel.xyplot.x)

I tried using 'vp=current.viewport()' in the call to draw.key() but it
did not help.  Can anybody suggest the proper way to specify position of
the key-list so that it is respected by draw.key() when called within a
panel function?

Boris Vasiliev.

More information about the R-help mailing list