2013-06-01 44 views
5

Tôi cố gắng để bao gồm một bản đồ bằng cách sử dụng thư viện ggmap trong knitr:bao gồm ggmap sử dụng knitr

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

Nó chạy bên ngoài Phạt tiền knitr, nhưng khi tôi cố gắng chạy đoạn mã này trong knitr, tôi nhận được lỗi:

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

Và không có bản đồ trong PDF thức

tôi đã cố gắng gói dòng qmplot bên trong đánh giá (...), nhưng điều đó không làm việc


Kết quả thư viện (đan); 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 

Tôi cũng đã cố gắng chạy cùng mã qua Rscript (tức là không phải từ trong VIM) như sau:

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

Và tôi nhận được một lỗi tương tự:

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 

Sử dụng ggmap v 2.3 và ggplot v 0.9.3. 1

+1

Tôi không thể tạo lại sự cố. Xin vui lòng gửi thư viện (knitr); sessionInfo() '. –

+0

và 'ggmap' là' v2.3'? điều này thật kỳ lạ; Tôi gần như hoàn toàn giống với môi trường của bạn, nhưng tôi vẫn không thể tái tạo vấn đề –

Trả lời

7

Tôi đã phát hiện sự cố: Tôi đã sử dụng thiết bị tikz để đưa bản đồ vào tài liệu cuối cùng của mình. Thiết bị tikz đó dường như không hoạt động trên bản đồ (hoặc ít nhất là bản đồ lớn hơn).

Khi tôi thay đổi thiết bị thành pdf hoặc png và bản đồ đã được đưa vào tài liệu của tôi mà không có vấn đề gì.

0

gặp lỗi này (R3.4.1) khi gọi một lệnh dài ggplot với nhiều lệnh bổ sung nối qua một dataframe lớn (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)) 

tách ra lệnh giải quyết điều này, và có lẽ, cải thiện khả năng đọc:

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 

Tự hỏi đây có phải là lỗi tổng quát hơn liên quan đến (kích thước lệnh) * (kích thước đối tượng) không?

EDIT: phát hiện lại lỗi này trên các lệnh nhỏ hơn để ggplot2 khi thay đổi kích thước cửa sổ vẽ - có lẽ là các tác vụ lớn hơn, tốn thời gian nhiều khả năng bị gián đoạn theo cách này - hoặc một lần nữa.

Các vấn đề liên quan