我正在尝试使用knitr中的ggmap库包含地图:
library(ggmap)
murder = subset(crime, offense='murder')
qmplot(lon, lat, data=murder)
它在knitr之外运行良好,但当我尝试在knitr中运行此代码块时,我收到错误:
UseMethod(“depth”)中的错误:没有适用于“NULL”类的对象的“深度”方法
最终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
答案 0 :(得分:7)
我发现了问题:我正在使用tikz设备将地图包含在我的最终文档中。 tikz设备似乎不适用于地图(或至少更大的地图)。
当我将设备更改为pdf或png时,地图已包含在我的文档中,没有任何问题。
答案 1 :(得分:0)
在调用长ggplot
命令时遇到此错误(R3.4.1),并在大型数据帧(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
想知道这是否是与(命令大小)*(对象大小)相关的更一般的错误?
编辑:当调整绘图窗口的大小时,对ggplot2的较小命令重新发现此错误 - 可能更大,时间密集型任务更可能以这种方式中断 - 或者再次,可能是内存问题。