On Monday 14 February 2005 18:12, Jeff Jorgensen wrote:> Dear R-sters,
>
> I was wondering if anyone has encountered the following issues. I've
> figured out how to get multiple levelplots [library(lattice)] on a
> single plot. However, when I add text (adding axis labels for the
> entire four panel plot) the text is missing when I insert the *.eps
> file I've created into my LaTeX document (via MikTeX-WinEdt). And,
> I've just upgraded to R v2.0.1 from v1.8.1 (Windows), and each
> individual levelplot is smaller compared to the older R release.
>
> Any clues as to 1) how I can recover the lost text, and
Your use is incorrect, in the sense that the return value of
grid.locator() is not a valid input of ltext. You could do the
following to fix this,
library(grid)
ltext(lapply(grid.locator(), convertX, "native", TRUE),
lab="x-axis label, where I click",cex=1.5)
ltext(lapply(grid.locator(), convertX, "native", TRUE),
lab = "y-axis label, where I click",
cex=1.5, srt=90)
but that doesn't seem to help either. So, there seems to be a bug
somewhere. However, you presumably want something like
grid.text(x = .05, y = .5, lab="y-axis label",
default.units = "npc", gp = gpar(cex=1.5),
rot = 90)
grid.text(x = .5, y = .05, lab="x-axis label",
default.units = "npc", gp = gpar(cex=1.5))
for the last two steps, which seems to work.
> 2) increase the size of each of the levelplots?
You need to change the following settings, in particular the entries
that end with 'padding' (similarly for 'layout.heights').
> str(trellis.par.get("layout.widths"))
List of 13
$ left.padding : num 1
$ key.left : num 1
$ key.ylab.padding : num 1
$ ylab : num 1
$ ylab.axis.padding: num 1
$ axis.left : num 1
$ axis.panel : num 1
$ panel : num 1
$ between : num 1
$ axis.right : num 1
$ axis.key.padding : num 1
$ key.right : num 1
$ right.padding : num 1
Deepayan
>
> Cheers,
>
> Jeff Jorgensen
>
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> Sample code that illustrates what I'm trying to do:
>
> #create a levelplot
> x<-seq(pi/4, 5*pi, length = 100)
> y<-seq(pi/4, 5*pi, length = 100)
> r<-as.vector(sqrt(outer(x^2, y^2, "+")))
> grid<-expand.grid(x=x, y=y)
> grid$z<-cos(r^2) * exp(-r/(pi^3))
> a<-levelplot(z~x*y, grid, cuts = 50, xlab="", ylab=",
> colorkey = FALSE)
>
> #create the multiple panel plot, here using all the same levelplot
> trellis.par.set(list(background=list(col="white"))) #white
background
> #using position to scale the plots up and to the right ~10%
> #to make room for the axis labels
> print(a,position=c(0.1,0.1,1,1),split=c(1,1,2,2),more=T)
> print(a,position=c(0.1,0.1,1,1),split=c(1,2,2,2),more=T)
> print(a,position=c(0.1,0.1,1,1),split=c(2,1,2,2),more=T)
> print(a,position=c(0.1,0.1,1,1),split=c(2,2,2,2),more=F)
> #commands that let you click where you want the labels centered
> ltext(grid::grid.locator(),lab="x-axis label, where I
click",cex=1.5)
> ltext(grid::grid.locator(),lab="y-axis label, where I
> click",cex=1.5,srt=90) #save device to an *.eps file, to be called
> later by a \includegraphics command
> dev.copy2eps(file="twobytwoplot.eps")