Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Limit lattice plots to viewports?

I would like to fit a whole lattice plot in a small region of an existing plot.

xyplot(decrease ~ treatment, OrchardSprays, groups = rowpos, type = "a")
pushViewport(viewport(.2, .7, .2, .2))
grid.rect(gp=gpar(fill="white"))

gives me this:

enter image description here

So viewport is pushed. But when if a lattice function is called again, it uses the whole device, as if calling grid.newpage():

xyplot(decrease ~ treatment, OrchardSprays, groups = rowpos, type = "a")

Is there a way to limit lattice plots to a predefined region on a device like in my example above?

like image 680
VitoshKa Avatar asked Feb 01 '11 14:02

VitoshKa


1 Answers

You have to directly call print with newpage argument set to FALSE (opposite to default value):

xyplot(decrease ~ treatment, OrchardSprays, groups = rowpos, type = "a")
pushViewport(viewport(.2, .7, .2, .2))
print(xyplot(decrease ~ treatment, OrchardSprays, groups = rowpos, type = "a"), newpage=FALSE)

You could find it in grid manual (r_instalation_path/library/grid/doc/grid.pdf), section "Adding lattice to grid".

enter image description here

like image 134
Marek Avatar answered Oct 23 '22 03:10

Marek