# [R] Settings of lattice graphs

Deepayan Sarkar deepayan at stat.wisc.edu
Thu Oct 31 19:18:50 CET 2002

```On Thursday 31 October 2002 04:56 am, hgoehlmann at gmx.de wrote:
> Thanks for the replies already. Still, with all your help I have not been
> able to get what I wanted. Ok, I should be a little more detailed.
>
> (1) I would like to create a function which draws a levelplot with a
> colorkey at the bottom to a vectorized file (win.metafile)
> (2) this function will receive data from a matrix that can vary in number
> of rows and will visualize the data in the matrix - I am trying to use
> levelplot because I get a nice colorkey with it - unlike image
> (3) the colorkey should have a fixed height at the bottom (say 40 pixels)
> (4) as the number of rows increases or decreases the size of the graphic
> should change accordingly
>
> BUT...   the colorkey dimensions should be fixed (in terms of height of the
> colorkey = the 40 pixels) and the height of the rows in the levelplot
> should be fixed as well. And this is where the problem starts...   I can
> define the canvas size according to nrow(matrix) + x (for the colorkey) and
> even split the canvas into two sections (using viewport), but since the
> levelplot always draws a margin around itself (even though I am setting
> scales=list(draw=F) ), the height of the rows in the levelplot varies with
> the number of rows I am feeding into levelplot...
>
> I hope my writing is understandable (and reproducable)...

I am not certain if I understand you correctly, but here goes:

I'm assuming that you know the maximum of the nrows, let's say that's in the
valiable maxRow. Then, just use

ylim = c(.5, maxRow+.5)

in ALL your levelplot calls. If you want to suppress drawing of the axes, you
need to use something like

lset(list(axis.line = list(col = "transparent")))

before you call levelplot (but after you have opened the plotting device).

> Thanks very much already for any further suggestion!
>
> Cheers,
> hinrich   d8-)
>
> > It is also possible to place lattice plots within generic grid
> > viewports, which allow you to manipulate the space around the plot in
> > many different ways.  See the last example in example(print.trellis) --
> > the important bit is the newpage=FALSE -- also, the following gives a
> > simple example where the margins could be increased by a number of lines
> > on each side of the lattice plot ...
> >
> >     library(lattice)
> >     x <- y <- 1:10
> >     myplot <- xyplot(y ~ x)
> >
> >     grid.newpage()
> >     grid.rect(gp=gpar(col=NULL, fill=trellis.par.get("background")\$col))
> >     push.viewport(plotViewport(c(5, 4, 4, 2) + 0.1))
> >     print(myplot, newpage=FALSE)
> >     # Just to show where the extra margin starts
> >     grid.rect(gp=gpar(lty="dashed"))
> >     pop.viewport()
> >
> > ... and here's a more complex example that gives a bit of an idea of the
> > flexibility you can get if you work a bit harder ...
> >
> >     # Grid viewport to place lattice plot within within
> >     widths <- unit(c(1, 1, 3), c("inches", "null", "lines"))
> >     heights <- unit(c(0.1, 1, 1), c("npc", "null", "cm"))
> >     push.viewport(viewport(layout=grid.layout(3, 3,
> >                              widths=widths,
> >                              heights=heights)))
> >     # Draw the lattice plot
> >     push.viewport(viewport(layout.pos.col=2,
> >                            layout.pos.row=2))
> >     print(myplot, newpage=FALSE)
> >     pop.viewport()
> >     # Some annotation of the margins
> >     push.viewport(viewport(layout.pos.col=1,
> >                            layout.pos.row=2))
> >     grid.text("1 inch")
> >     pop.viewport()
> >     push.viewport(viewport(layout.pos.col=3,
> >                            layout.pos.row=2))
> >     grid.text("3 lines")
> >     pop.viewport()
> >     push.viewport(viewport(layout.pos.col=2,
> >                            layout.pos.row=3))
> >     grid.text("1 cm", rot=90)
> >     pop.viewport()
> >     push.viewport(viewport(layout.pos.col=2,
> >                            layout.pos.row=1))
> >     grid.text("0.1 npc", rot=90)
> >     pop.viewport(2)
> >
> > Hope that helps :)
> >
> > Paul
>
> -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
>.-.- r-help 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-help-request at stat.math.ethz.ch
> _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
>._._

-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help 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-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._

```

More information about the R-help mailing list