2013-06-01 19 views
5

Sto cercando di includere una mappa utilizzando la libreria ggmap in knitr:includono ggmap utilizzando knitr

library(ggmap) 
murder = subset(crime, offense='murder') 
qmplot(lon, lat, data=murder) 

Funziona benissimo al di fuori di knitr, ma quando provo a fare funzionare questo codice pezzo in knitr, ottengo il errore:

Error in UseMethod("depth"): no applicable method for 'depth' applied to an object of class "NULL"

E non c'è nessuna mappa in PDF finale

ho provato avvolgendo la linea qmplot all'interno di valutare (...), ma che non ha funzionato


Output di libreria (knitr); sessionInfo()

> library(knitr) 
> sessionInfo() 
version 3.0.1 (2013-05-16) 
Platform: i686-redhat-linux-gnu (32-bit) 

locale: 
[1] LC_CTYPE=en_US.UTF-8  LC_NUMERIC=C    
[3] LC_TIME=en_US.UTF-8  LC_COLLATE=en_US.UTF-8  
[5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8  
[7] LC_PAPER=C     LC_NAME=C     
[9] LC_ADDRESS=C    LC_TELEPHONE=C    
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C  

attached base packages: 
[1] stats  graphics utils  datasets grDevices methods base  

other attached packages: 
[1] knitr_1.2  vimcom_0.9-8 setwidth_1.0-3 

loaded via a namespace (and not attached): 
[1] digest_0.6.3 evaluate_0.4.3 formatR_0.7 stringr_0.6.2 tools_3.0.1 

Ho anche provato esegue lo stesso codice tramite rscript (cioè non all'interno VIM) con il seguente:

Rscript -e "library(knitr); knit('map.Rnw')" 

e ottenere un errore simile:

Error in UseMethod("depth") : 
no applicable method for 'depth' applied to an object of class "NULL" 
Calls: knit ... grid.draw -> grid.draw.gTableChild -> upViewport -> depth 

Utilizzo di ggmap v 2.3 e ggplot v 0.9.3. 1

+1

Non riesco a riprodurre il problema. Per favore pubblica 'library (knitr); sessionInfo() '. –

+0

e 'ggmap' è' v2.3'? questo è strano; Ho quasi esattamente lo stesso ambiente di te, ma non riesco ancora a riprodurre il problema –

risposta

7

Ho trovato il problema: stavo usando il dispositivo tikz per includere la mappa nel mio documento finale. Quel dispositivo tikz non sembra funzionare per le mappe (o almeno per le mappe più grandi).

Quando ho cambiato il dispositivo in pdf o png e la mappa è stata inclusa nel mio documento senza problemi.

0

verificato l'errore (R3.4.1) quando si seleziona un lungo comando ggplot con molti comandi aggiuntivi annesse su un'ampia dataframe (28x32000)

ggplot(z, aes(x=T,y=A,fill=F), title="D") + geom_bar(aes(fill=F), stat ="identity", position="dodge", colour="black") + facet_grid(P~T,scales='free_x',space='free_x') 
+ theme(strip.text.y = element_text(angle = 0), axis.text.x = element_text(angle = 270)) + guides(col=guide_legend(ncol=1)) 

separano i comandi risolto questo, e probabilmente, migliore leggibilità:

z2 <- ggplot(z, aes(x=T,y=A,fill=F), title="D") 
z2 <- z2 + geom_bar(aes(fill=F), stat ="identity", position="dodge", colour="black") 
z2 <- z2 + facet_grid(P~T,scales='free_x',space='free_x') 
z2 <- z2 + theme(strip.text.y = element_text(angle = 0), axis.text.x = element_text(angle = 270)) 
z2 <- z2 + guides(col=guide_legend(ncol=1)) 
z2 

Chiedersi se si tratta di un errore più generale relativo a (dimensione del comando) * (dimensione dell'oggetto)?

EDIT: riscoperto questo errore sui comandi piccole per ggplot2 quando il ridimensionamento della finestra tramando - presumibilmente più grande, le attività ad alta intensità di tempo più probabilità di essere interrotto in questo modo - o ancora, forse un problema di memoria.