r - ggplot 2's continuous color scale incompatible with knitr' 是 tikzDevice 吗?

标签 r graphics ggplot2 knitr tikz

我已经使用 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/

相关文章:

r - 颜色图例在 R plotly subplot 中不是结果

r - 将 R 数据框中的行值转换为列值,其中 1 表示存在,0 表示不存在

r - 具有预测区间的时间序列图

r - ggplot2 热图,图表之间具有固定比例的颜色条

r - 缩放颜色渐变并超出限制

r - 如何在 R 中划分缺失数据的不等数据帧

r - R 基础图形中的默认文本大小是多少?

graphics - 光线追踪噪声

r - 只需调用一次 R 中的绘图函数,即可将绘图保存为 PNG 和 PDF

r - 印度的 R 包?