我是R和LaTeX的新手,刚刚发现如何使用R绘制标准时间序列图并将其保存为png图像。我担心的是将它保存为图像然后将其嵌入到LaTeX中将会扩展它并使其看起来很难看。
有没有办法让R的plot()
函数输出矢量图形并将其嵌入到LaTeX中?我是两个人的初学者所以请温柔:)代码片段非常感谢!
答案 0 :(得分:56)
我建议使用tikzDevice
包来生成包含在LaTeX文档中的输出:
http://cran.r-project.org/web/packages/tikzDevice/index.html
tikzDevice将R中生成的图形转换为可由LaTeX包tikz
解释的代码。 TikZ为LaTeX提供了一个非常好的矢量绘图系统。 TikZ输出的一些很好的例子位于:
tikzDevice
可以像任何其他R图形设备一样使用:
require( tikzDevice )
tikz( 'myPlot.tex' )
plot( 1, 1, main = '\\LaTex\\ is $\\int e^{xy}$' )
dev.off()
请注意,LaTeX宏中的反斜杠必须加倍,因为R将单个反斜杠解释为转义字符。要在LaTeX文档中使用绘图,只需包含它:
\include{path/to/myPlot.tex}
pgfSweave
包中包含Sweave
功能,可以为您处理上述步骤。确保您的文档在LaTeX前言中的某处包含\usepackage{tikz}
。
与tikz()
相比,pdf()
功能的优点是:
图中的标签和标题字体始终与LaTeX文档中使用的字体相匹配。这为您的文档提供了统一的外观。
您可以使用LaTeX排版机的所有功能来创建数学注释,并且可以在图形文本中使用任意LaTeX代码。
tikz()
功能的缺点是:
处理包含大量组件的图表不能很好地扩展。这些是persp()
大型基质图。图形元素的剪切数量可能导致LaTeX慢慢爬行或内存不足。
该软件包目前已标记为测试版。这意味着如果作者找到令人信服的理由,包的界面或功能可能会发生变化。
我应该通过声明我是tikzDevice
和pgfSweave
套餐的作者来结束这篇文章,所以我的观点可能有偏见。但是,我在去年使用这两个软件包编写了几份学术报告,对结果非常满意。
答案 1 :(得分:53)
Shane是现货,你确实想要Sweave。最终
作为一个新手,你最好分开任务。为此,请执行以下操作:
pdf("figures/myfile.pdf", height=6, width=6)
。plot(1:10, type='l', main='boring')
- 并且请记住,格子和ggplot需要在print
周围显式plot
。dev.off()
以完成文件。usepackage{graphicx}
,使用\includegraphics[width=0.98\textwidth]{figures/myfile}
包含之前创建的图形,并注意文件扩展名是可选的。pdflatex
运行并享受。答案 2 :(得分:22)
您可能需要考虑使用Sweave。在Sweave网站(以及其他地方)上有很多很好的文档可供使用。它的语法非常简单:只需将您的R代码放在<<>>=
和@
之间。
这是一个结束looking like this的简单示例:
\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}
要构建文档,您只需拨打R CMD Sweave file.Rnw
或从R中运行Sweave(file)
即可。
答案 3 :(得分:3)
这是一个我无法找到的关于SO的问题。
但: http://r-forge.r-project.org/projects/tikzdevice/ - 来自r的tikz输出 和 通过sweave http://www.rforge.net/pgfSweave/ tikz代码。
使用tikz将使您看起来与文档的其余部分一致,而且它将使用latex来排版图形中的所有文本。