我已经使用 knitr 与 R 基础图形和 tikz 输出有一段时间了,并且想尝试一下 ggplot2
。但是,这个最小的示例无法使用 knitr 1.0.5 产生任何输出:
\documentclass{article}
\begin{document}
<<dev = 'tikz'>>=
library(ggplot2)
d = data.frame(a = c(1, 2, 3), b = c(4, 5, 6), c = c(7, 8, 9))
ggplot(d, aes(a, b, color = c)) + geom_point()
@
\end{document}
相反,它会失败,并显示消息UseMethod("深度")中的错误:没有适用于“深度”的方法应用于类“NULL”的对象
。在 R 中执行代码或选择 png 设备将产生预期的图形。忽略颜色美学或分解 c
也适用于 tikzDevice,因此连续色阶似乎是问题所在。
我做错了什么吗,或者这是一个错误?
最佳答案
通过将 dev.off()
添加到代码块的末尾,我可以让 tikzDevice
使用您的代码。例如:
cat("
\\documentclass{article}
\\begin{document}
<<dev = 'tikz'>>=
library(ggplot2)
d = data.frame(a = c(1, 2, 3), b = c(4, 5, 6), c = c(7, 8, 9))
ggplot(d, aes(a, b, color = c)) + geom_point()
dev.off()
@
\\end{document}
", "test_works.Rtex")
knit("test_works.Rtex")
工作正常。
我还注意到,如果通过(原始)代码上的事件 R session 调用 knit()
,我会留下一个事件的 tikz 设备...
cat("
\\documentclass{article}
\\begin{document}
<<dev = 'tikz'>>=
library(ggplot2)
d = data.frame(a = c(1, 2, 3), b = c(4, 5, 6), c = c(7, 8, 9))
ggplot(d, aes(a, b, color = c)) + geom_point()
@
\\end{document}
", file = "test_fails.Rtex")
knit("test_fails.Rtex")
dev.list()
关于r - ggplot 2's continuous color scale incompatible with knitr' 是 tikzDevice 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14688829/