把R图变成LaTeX?
我是R和LaTeX的新手,刚刚find了如何使用R绘制标准时间序列图并将其保存为PNG图像。 我担心的是,将它保存为图像,然后将其embedded到LaTeX中,将会使其看起来很丑。
有没有办法使R的plot()
函数输出vectorgraphics,并将其embedded到LaTeX中? 我是一个总的初学者,所以请温柔:)代码片断高度赞赏!
谢恩现身,你确实想要Sweave。 最终。
作为一个新手,你可能最好分离任务。 为此,请执行以下操作:
- 打开一个设备:
pdf("figures/myfile.pdf", height=6, width=6)
。 - 绘制你的R对象:
plot(1:10, type='l', main='boring')
:plot(1:10, type='l', main='boring')
– 记住lattice和ggplot需要一个明确的print
。 - 重要的是:closures你的设备:
dev.off()
来完成文件。 - 可选:检查PDF文件。
- 在LaTeX中,在文档头中使用
usepackage{graphicx}
,使用
\includegraphics[width=0.98\textwidth]{figures/myfile}
包含之前创build的graphics,并注意文件扩展名是可选的。 - 通过
pdflatex
运行,享受。
我会推荐使用tikzDevice
包来生成包含在LaTeX文档中的输出:
http://cran.r-project.org/web/packages/tikzDevice/index.html
tikzDevice将R中生成的graphics转换为可由LaTeX包tikz
解释的代码。 TikZ为LaTeX提供了一个非常好的vector绘图系统。 TikZ输出的一些很好的例子位于:
tikzDevice
可以像其他任何Rgraphics设备一样使用:
require( tikzDevice ) tikz( 'myPlot.tex' ) plot( 1, 1, main = '\\LaTex\\ is $\\int e^{xy}$' ) dev.off()
请注意,由于R将单个反斜杠解释为转义字符,因此LaTeXmacros中的反斜杠必须加倍。 要在LaTeX文档中使用该图,只需包含它:
\include{path/to/myPlot.tex}
pgfSweave
软件包包含Sweave
function,可以为您处理上述步骤。 确保您的文档在LaTeX序言中的某处包含\usepackage{tikz}
。
与pdf()
相比, tikz()
函数的优点是:
-
数字中的标签和标题字体总是与LaTeX文档中使用的字体相匹配。 这为您的文档提供了一个统一的外观。
-
您可以使用LaTeX排版机的所有function来创buildmath注释,并且可以在graphics文本中使用任意的LaTeX代码。
tikz()
函数的缺点是:
-
它不能很好地处理大量组件的情节。 这些都是诸如
persp()
大块的persp()
情节。 graphics元素的剪切数量会导致LaTeX缓慢爬行或耗尽内存。 -
该软件包目前被标记为testing版。 这意味着,如果作者find一个令人信服的理由,那么包的界面或function可能会发生变化。
我应该结束这篇文章,否认我是tikzDevice
和pgfSweave
软件包的作者,所以我的意见可能有偏差。 不过,在过去的一年里,我已经使用这两个软件包编制了几份学术报告,并对结果非常满意。
你可能要考虑使用Sweave 。 在Sweave网站(和其他地方)有很多很棒的文档。 它具有非常简单的语法:只需将您的R代码放在<<>>=
和@
。
这是一个简单的例子,最终看起来像这样 :
\documentclass[a4paper]{article} \title{Sweave Example 1} \author{Friedrich Leisch} \begin{document} \maketitle In this example we embed parts of the examples from the \texttt{kruskal.test} help page into a \LaTeX{} document: <<>>= data(airquality) library(ctest) kruskal.test(Ozone ~ Month, data = airquality) @ which shows that the location parameter of the Ozone distribution varies significantly from month to month. Finally we include a boxplot of the data: \begin{center} <<fig=TRUE,echo=FALSE>>= boxplot(Ozone ~ Month, data = airquality) @ \end{center} \end{document}
要构build文档,只需调用R CMD Sweave file.Rnw
Sweave(file)
R CMD Sweave file.Rnw
或从R中运行Sweave(file)
。
这是我无法find的一个关于SO的问题。
但是: http ://r-forge.r-project.org/projects/tikzdevice/ – 通过sweave从r和http://www.rforge.net/pgfSweave/ tikz代码输出tikz。
使用tikz会给你一个与你的文档的其余部分保持一致的外观,另外它将使用latex来排版graphics中的所有文本。
编辑将 LaTeX变成R图