Dear list,
I'm trying to produce a plot via xyplot with minimal sourounding white
space. However, I cannot find the options in xyplot, ps.options or
wherever which prevents lattice from drawing quite some white space
around my plot. However, this is quite a problem for me as I want to
produce an inset plot inside another lattice-plot. I'm using the panel
function to open a viewport and print the inset plot within the actual
plot. The problem now is, that there is lots of sourounding white space
around my inner plot. Here is an example:
panel.inset <- function(...,
inset,
drawRect=TRUE,
ixpos=unit(0, "mm"), iypos=unit(1,
"npc"),
ijust=c("left","top"),
iwidth=unit(0.7, "npc"), iheight=unit(0.5,
"npc")) {
## open our viewport ...
pushViewport(viewport(x=ixpos, y=iypos, width=iwidth, height=iheight,
just=ijust, name="inset"))
if(drawRect)
grid.rect(gp=gpar(lwd=1,col="black"))
## ... and place the other plot inside there
print(inset, newpage=FALSE, prefix="insetPlot")
upViewport()
## draw the actual plot
panel.xyplot(...)
## why is this neccessary?? Otherwise I get no lines for the axis ...
grid.rect(gp=gpar())
}
x<-0:10
y<-x^4
insetPlot <- xyplot(y ~ x, scales=list(log=T), main=NULL,
aspect="fill")
xyplot(y ~ x, panel="panel.inset", inset=insetPlot)
Thank you very much for any input!
Greetings,
Sebastian Weber
On 9/13/07, Sebastian Weber <sebastian.weber at physik.tu-darmstadt.de> wrote:> Dear list, > > I'm trying to produce a plot via xyplot with minimal sourounding white > space. However, I cannot find the options in xyplot, ps.options or > wherever which prevents lattice from drawing quite some white space > around my plot. However, this is quite a problem for me as I want to > produce an inset plot inside another lattice-plot. I'm using the panel > function to open a viewport and print the inset plot within the actual > plot. The problem now is, that there is lots of sourounding white space > around my inner plot. Here is an example: > > panel.inset <- function(..., > inset, > drawRect=TRUE, > ixpos=unit(0, "mm"), iypos=unit(1, "npc"), > ijust=c("left","top"), > iwidth=unit(0.7, "npc"), iheight=unit(0.5, > "npc")) { > ## open our viewport ... > pushViewport(viewport(x=ixpos, y=iypos, width=iwidth, height=iheight, > just=ijust, name="inset")) > > if(drawRect) > grid.rect(gp=gpar(lwd=1,col="black")) > > ## ... and place the other plot inside there > print(inset, newpage=FALSE, prefix="insetPlot") > > upViewport() > > ## draw the actual plot > panel.xyplot(...) > > ## why is this neccessary?? Otherwise I get no lines for the axis ... > grid.rect(gp=gpar()) > } > > x<-0:10 > y<-x^4 > > > insetPlot <- xyplot(y ~ x, scales=list(log=T), main=NULL, aspect="fill") > xyplot(y ~ x, panel="panel.inset", inset=insetPlot) > > Thank you very much for any input!See str(trellis.par.get("layout.widths")) str(trellis.par.get("layout.heights")) ?trellis.par.set ?xyplot (the entry for 'par.settings') -Deepayan