我是 R 和 LaTeX 的新手,最近才发现如何使用 R 绘制标准时间序列图并将其保存为 png 图像。我担心的是,将其保存为图像然后将其嵌入到 LaTeX 中会对其进行缩放并使其看起来很难看。
有没有办法让 R 的plot()
函数输出矢量图形并将其嵌入到 LaTeX 中?我在这两个方面都是初学者,所以请保持温和:) 非常感谢代码片段!
我是 R 和 LaTeX 的新手,最近才发现如何使用 R 绘制标准时间序列图并将其保存为 png 图像。我担心的是,将其保存为图像然后将其嵌入到 LaTeX 中会对其进行缩放并使其看起来很难看。
有没有办法让 R 的plot()
函数输出矢量图形并将其嵌入到 LaTeX 中?我在这两个方面都是初学者,所以请保持温和:) 非常感谢代码片段!
我会推荐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
可以为您处理上述步骤的功能。确保您的文档包含\usepackage{tikz}
LaTeX 序言中的某处。
tikz()
功能比较的优点 pdf()
是:
图形中标签和标题的字体始终与 LaTeX 文档中使用的字体相匹配。这为您的文档提供了统一的外观。
您拥有可用于创建数学注释的 LaTeX 排版机的所有功能,并且可以在图形文本中使用任意 LaTeX 代码。
该功能的缺点tikz()
是:
它不能很好地处理具有大量组件的图。这些是诸如persp()
大型矩阵图之类的东西。图形元素的数量过多会导致 LaTeX 缓慢爬行或内存不足。
该软件包目前被标记为测试版。这意味着如果作者找到令人信服的理由,包的界面或功能可能会发生变化。
我应该以声明我是 thetikzDevice
和pgfSweave
packages 的作者来结束这篇文章,所以我的意见可能有偏见。但是,我在去年使用这两个软件包制作了几份学术报告,并且对结果非常满意。
Shane 很准,你确实想要 Sweave。最终。
作为一个新手,你最好还是分离任务。为此,请执行以下操作:
pdf("figures/myfile.pdf", height=6, width=6)
。plot(1:10, type='l', main='boring')
——记住 lattice 和 ggplot 需要一个明确的print
around plot
。dev.off()
完成文件。usepackage{graphicx}
在文档标题中使用\includegraphics[width=0.98\textwidth]{figures/myfile}
,用于包含之前创建的图形,并注意文件扩展名是可选的。pdflatex
并享受。您可能要考虑使用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}
要构建文档,您可以在 R 中调用R CMD Sweave file.Rnw
或运行。Sweave(file)
这是我找不到的关于 SO 的问题的欺骗。
但是: http ://r-forge.r-project.org/projects/tikzdevice/ - r 的 tikz 输出和 http://www.rforge.net/pgfSweave/ tikz 代码通过 sweave。
使用 tikz 将使您看起来与文档的其余部分保持一致,此外,它将使用 Latex 排版图表中的所有文本。