2013-06-01 16 views
5

Próbuję zawierać mapę z wykorzystaniem biblioteki ggmap w knitr:obejmują ggmap użyciu knitr

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

działa poprawnie poza knitr, ale gdy próbuję uruchomić ten kod klocek w knitr, otrzymuję błąd:

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

I nie ma map w końcowej PDF

próbowałem zawijania linii qmplot wewnątrz ocenić (...), ale to nie działa


Wyjście biblioteki (dzianina); 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 

Próbowałem też działa ten sam kod poprzez Rscript (czyli nie od wewnątrz VIM) z następujących powodów:

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

I uzyskać podobny błąd:

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 

Używanie ggmap v 2.3 i ggplot v 0.9.3. 1

+1

Nie mogę odtworzyć problemu. Opublikuj 'library (knitr); sessionInfo() '. –

+0

i 'ggmap' to' v2.3'? to jest dziwne; Mam prawie dokładnie to samo środowisko, co ty, ale nadal nie mogę odtworzyć problemu –

Odpowiedz

7

Znalazłem problem: użyłem urządzenia tikz do włączenia mapy do mojego ostatecznego dokumentu. To urządzenie tikz nie działa na mapach (lub co najmniej na większych mapach).

Po zmianie urządzenia na pdf lub png, mapa została dołączona do mojego dokumentu bez żadnych problemów.

0

napotkał ten błąd (R3.4.1) podczas wywoływania długą ggplot polecenie z wielu dodatkowych poleceń załączonych na dużej 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)) 

oddzielenie polecenia rozwiązać to i zapewne lepszej czytelności:

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 

Zastanawiasz się, czy jest to bardziej ogólny błąd związany z (rozmiarem polecenia) * (rozmiar obiektu)?

EDIT: odnaleziony ten błąd na mniejszych poleceń ggplot2 gdy zmiany rozmiaru okna kreślenia - przypuszczalnie większe, czasochłonne zadania bardziej prawdopodobne, aby być przerwana w ten sposób - albo znowu, prawdopodobnie problem pamięci.