我不确定这是一个真正的错误还是我遗漏了一些东西,但它就在这里。我有一个要循环调用的 ggplot 函数 (plot_data)。我已经将该函数包含在它自己的块中。在第一种情况下(标题为“works”的块),在循环中调用该函数可以正常工作,在这种情况下,plot_data 函数后跟一个条形图。然而,在第二种情况下,plot_data() 函数后跟一个热图,在这种情况下,热图奇怪地抑制了 plot_data 函数。无论是否围绕 plot_data 函数调用 plot() 或 print() 都会发生这种情况。
有没有办法让 ggplots 与 knitr 一起工作?函数调用到底是如何抑制先前函数调用的输出的?
以下代码为我重现了该错误:
[preamble omitted]
\begin{document}
<<setup, eval=TRUE, echo=FALSE, cache=FALSE>>=
plot_data <- function(data) {
require(ggplot2)
require(reshape)
d.melt <- melt(data)
ggplot(data=d.melt, aes(x=X2, y=value, group=X1, colour=X1)) + geom_line(size=.5) +
scale_x_discrete("") +
scale_y_continuous("Value")
}
@
<<works, echo=FALSE, results='asis', out.width='.3\\linewidth', dev='pdf', cache=TRUE >>=
set.seed(10010)
data <- matrix(runif(10000, 1,100), ncol=100)
for (i in 1:10) {
ind <- sample(1:100, 10)
plot(plot_data(data[ind,]))
barplot(ind)
}
@
<<doesnt-work, echo=FALSE, results='asis', out.width='.3\\linewidth', dev='pdf', cache=TRUE >>=
set.seed(10010)
data <- matrix(runif(10000, 1,100), ncol=100)
for (i in 1:10) {
ind <- sample(1:100, 10)
plot(plot_data(data[ind,])) # calling print instead of plot doesn't work either
heatmap(data[ind,] )
}
@
\end{document}