2013-06-01 3 views
5

Я пытаюсь включить карту, используя библиотеку ggmap в knitr:включают ggmap с помощью knitr

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

Он прекрасно работает за пределами knitr, но когда я пытаюсь запустить этот код кусок в knitr, я получаю ошибка:

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

И нет никакой карты в окончательном PDF

Я попытался обертыванием qmplot линии внутри оценка (...), но это не сработало

-

Выход библиотеки (книжник); 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 

Я также попытался запустить тот же код, с помощью Rscript (т.е. не изнутри VIM) следующим:

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

И я получаю подобную ошибку:

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 

Использование ggmap v 2.3 и ggplot v 0.9.3. 1

+1

Я не могу воспроизвести проблему. Пожалуйста, напишите 'library (knitr); sessionInfo() '. –

+0

и 'ggmap' -' v2.3'? это странно; У меня почти такая же среда, как и вы, но я до сих пор не могу воспроизвести проблему –

ответ

7

Я нашел проблему: я использовал устройство tikz для включения карты в свой окончательный документ. Это устройство tikz, похоже, не работает для карт (или, по крайней мере, более крупных карт).

Когда я сменил устройство на pdf или png, и карта была включена в мой документ без проблем.

0

Встречающиеся эта ошибка (R3.4.1) при вызове длинной ggplot команды с большим количеством дополнительных команд приложенных на большой 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)) 

, отделяющие из команды решила эту проблему, и, возможно, улучшение читаемости:

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 

Спрашивайте, является ли это более общей ошибкой, связанной с (размер команды) * (размер объекта)?

EDIT: вновь эта ошибка на небольших командах ggplot2 при изменения размеров окна замышляет - предположительно больше, время-ресурсоемкие задачи, более вероятно, будет прерваны таким образом - или опять же, возможно, проблема памяти.

Смежные вопросы