我使用R的4
4
8
包生成一个LaTeX文档,将文本与嵌入的R图和输出结合起来。
通常写这样的东西:
knitr
工作正常。
(对于那些不熟悉We plot y vs x in a scatter plot and add the least squares line:
<<scatterplot>>=
plot(x, y)
fit <- lm(y~x)
abline(fit)
@
或knitr
的人,这会在LaTeX逐字环境中回显代码和输出,并将完成的绘图添加为LaTeX文档中的图形。)
但现在我想写更详细的逐行评论,如:
Sweave
问题是现在有两个First we plot y vs x with a scatterplot:
<<scatterplot>>=
plot(x, y)
@
Then we regress y on x and add the least squares line to the plot:
<<addline>>=
fit <- lm(y~x)
abline(fit)
@
代码块用于同一个图。第二个代码块knitr
失败,因为第一个代码块addline
中创建的绘图框对第二个代码块中的代码不可见。从一个代码块到下一个代码块,绘图窗口似乎不是持久的。
有什么方法可以让scatterplot
保持knit()
创建的绘图窗口对第二个代码块保持活动状态?
如果无法做到这一点,我怎样才能在添加到现有图表的代码行上获得LaTeX风格的评论?
一天后
我现在可以看到之前已经提出过基本相同的问题,请参阅: 从2013年开始How to build a layered plot step by step using grid in knitr? {2016年Splitting a plot call over multiple chunks。 2013年的另一个问题也非常相似: How to add elements to a plot using a knitr chunk without original markdown output?
答案 0 :(得分:4)
您可以设置knitr::opts_knit$set(global.device = TRUE)
,这意味着所有代码块共享同一个全局图形设备。一个完整的例子:
\documentclass{article}
\begin{document}
<<setup, include=FALSE>>=
knitr::opts_knit$set(global.device = TRUE)
@
First we plot y vs x with a scatterplot:
<<scatterplot>>=
x = rnorm(10); y = rnorm(10)
plot(x, y)
@
Then we regression y and x and add the least square line to the plot:
<<addline>>=
fit <- lm(y~x)
abline(fit)
@
\end{document}
答案 1 :(得分:3)