5

Knitr に ggmap ライブラリを使用してマップを含めようとしています。

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

Knitr の外では問題なく動作しますが、knitr でこのコード チャンクを実行しようとすると、エラーが発生します。

UseMethod("depth") のエラー: クラス "NULL" のオブジェクトに適用される 'depth' に適用可能なメソッドがありません

そして、最終的なPDFには地図がありません

qmplot 行を evaluate(...) 内にラップしようとしましたが、うまくいきませんでした


ライブラリの出力(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  

また、次のように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 の使用

4

2 に答える 2

7

問題が見つかりました。tikz デバイスを使用して、最終的なドキュメントにマップを含めていました。その tikz デバイスは、マップ (または少なくともより大きなマップ) では機能しないようです。

デバイスを pdf または png に変更したところ、問題なくマップがドキュメントに含まれていました。

于 2013-08-25T03:34:03.787 に答える