2013-02-21 15 views
6

E 'possibile "forzare" i grafici di base R nel pacchetto gridgrid.newpage? Ad esempio, questo funziona correttamente:Come utilizzare i grafici di base R in grid.newpage?

library(grid) 
grid.newpage() 
vp1 <- viewport(x=0,y=0.5,width=0.5, height=0.5, just = c("left", "bottom")) 
vp2 <- viewport(x=0.5,y=0,width=0.5, height=0.5, just = c("left", "bottom")) 
pushViewport(vp1) 
grid.rect() 
grid.text("vp1", 0.5, 0.5) 
upViewport() 
pushViewport(vp2) 
grid.rect() 
grid.text("vp2", 0.5, 0.5) 

enter image description here.

Ma se provo qualcosa di simile:

grid.newpage() 
vp1 <- viewport(x=0,y=0.5,width=0.5, height=0.5, just = c("left", "bottom")) 
vp2 <- viewport(x=0.5,y=0,width=0.5, height=0.5, just = c("left", "bottom")) 
pushViewport(vp1) 
grid.rect() 
print(plot(1,2)) 
grid.text("vp1", 0.5, 0.5) 
upViewport() 
pushViewport(vp2) 
grid.rect() 
print(plot(1,2)) 

trama di base R poco più-giostre grid.newpage. L'utilizzo di par(new=T) non aiuta neanche.

+4

@james ho imparato a non dire che qualcosa è impossibile in R – Andrie

+2

Il pacchetto [gridbase] (http://cran.r-project.org/web/packages/gridBase/index.html) di Paul Murrell, autore della griglia, ti consente di farlo. Ad esempio, vedere la [vignetta] (http://cran.r-project.org/web/packages/gridBase/vignettes/gridBase.pdf) – Andrie

+0

@Andrie, corretto! Anche se noto che le differenze fondamentali impongono ancora limitazioni – James

risposta

6

Perché nessuno ha risposto, lo farò io stesso. Come ha detto Andrie, la risposta a questa domanda è here. Avrete bisogno gridFIG() funzione dal gridBase pacchetto per tracciare trame di base R in plot.new() invece di grid.newpage():

library(grid) 
library(gridBase) 
plot.new() 
vp1 <- viewport(x=0,y=0.5,width=0.5, height=0.5, just = c("left", "bottom")) 
vp2 <- viewport(x=0.5,y=0,width=0.5, height=0.5, just = c("left", "bottom")) 
pushViewport(vp1) 
grid.rect() 
grid.text("vp1", 0.5, 0.5) 
par(new=TRUE, fig=gridFIG()) 
plot(1,2) 
upViewport() 
pushViewport(vp2) 
grid.rect() 
grid.text("vp2", 0.5, 0.5) 
par(new=TRUE, fig=gridFIG()) 
plot(1,2) 

enter image description here

Problemi correlati