将 LaTeX 放入 R 绘图中
我想使用 base 的组合将
或使用 LaTeX
排版添加到 R
中的绘图元素(例如:标题、轴标签、注释等) /latticeggplot2
。
问题:
- 有没有办法使用这些包将
LaTeX
放入绘图中,如果可以,是如何完成的? - 如果没有,是否需要额外的软件包来完成此任务。
例如,在 Python matplotlib
中,通过 text.usetex
包编译 LaTeX
,如下所述: scipy.org/Cookbook/Matplotlib/UsingTex" rel="noreferrer">http://www.scipy.org/Cookbook/Matplotlib/UsingTex
是否有类似的过程可以在 R?
I would like to add LaTeX
typesetting to elements of plots in R
(e.g: the title, axis labels, annotations, etc.) using either the combination of base/lattice
or with ggplot2
.
Questions:
- Is there a way to get
LaTeX
into plots using these packages, and if so, how is it done? - If not, are there additional packages needed to accomplish this.
For example, in Python matplotlib
compiles LaTeX
via the text.usetex
packages as discussed here: http://www.scipy.org/Cookbook/Matplotlib/UsingTex
Is there a similar process by which such plots can be generated in R
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(10)
CRAN 包 Latex2exp 包含一个
TeX
函数,该函数将 LaTeX 公式转换为 R 的绘图数学表达式。您可以在任何可以输入数学注释的地方使用它,例如轴标签、图例标签和一般文本。例如:
生成此图。
The CRAN package latex2exp contains a
TeX
function that translate LaTeX formulas to R's plotmath expressions. You can use it anywhere you could enter mathematical annotations, such as axis labels, legend labels, and general text.For example:
produces this plot.
以下是使用 ggplot2 的示例:
Here's an example using
ggplot2
:从此处窃取,以下命令正确使用 LaTeX 绘制标题:
请参阅
?plotmath
了解更多详细信息。As stolen from here, the following command correctly uses LaTeX to draw the title:
See
?plotmath
for more details.您可以从 R 生成 tikz 代码:
http://r-forge.r-project.org/projects/tikzdevice/
You can generate tikz code from R:
http://r-forge.r-project.org/projects/tikzdevice/
这是我自己的实验室报告中的一些内容。
tickzDevice
为LaTeX
导出tikz
图像请注意,在某些情况下
"\\"
会变成"\"
和"$"
变为"$\"
,如以下 R 代码所示:"$z\\frac{a} {b}$”-> "$\z\frac{a}{b}$\"
xtable 也将表导出为乳胶代码
代码:
Here's something from my own Lab Reports.
tickzDevice
exportstikz
images forLaTeX
Note, that in certain cases
"\\"
becomes"\"
and"$"
becomes"$\"
as in the following R code:"$z\\frac{a}{b}$" -> "$\z\frac{a}{b}$\"
Also xtable exports tables to latex code
The code:
这是一个很酷的函数,可让您使用绘图功能,但将表达式存储为字符模式的对象。这使您可以使用粘贴或正则表达式函数以编程方式操作它们。我不使用 ggplot,但它也应该在那里工作:
Here's a cool function that lets you use the plotmath functionality, but with the expressions stored as objects of the character mode. This lets you manipulate them programmatically using paste or regular expression functions. I don't use ggplot, but it should work there as well:
几年前,我通过输出为 .fig 格式而不是直接输出为 .pdf 来做到这一点;您编写包括 Latex 代码在内的标题,并使用Fig2ps 或Fig2pdf 创建最终的图形文件。我必须执行此操作的设置与 R 2.5 不同;如果我必须再次这样做,我会改为查看 tikz,但无论如何我都会将其作为另一个潜在的选择包含在这里。
我关于如何使用 Sweave 做到这一点的注释如下:http://www.stat.umn。 edu/~arendahl/计算
I did this a few years ago by outputting to a .fig format instead of directly to a .pdf; you write the titles including the latex code and use fig2ps or fig2pdf to create the final graphic file. The setup I had to do this broke with R 2.5; if I had to do it again I'd look into tikz instead, but am including this here anyway as another potential option.
My notes on how I did it using Sweave are here: http://www.stat.umn.edu/~arendahl/computing
h <- rnorm(均值 = 5,sd = 1,n = 1000)
hist(h, main = 表达式(paste("采样值,", mu, "=5, ", sigma,
"=1")))
摘自此处的一篇非常帮助文章 https ://stats.idre.ucla.edu/r/codefragments/greek_letters/
h <- rnorm(mean = 5, sd = 1, n = 1000)
hist(h, main = expression(paste("Sampled values, ", mu, "=5, ", sigma,
"=1")))
Taken from a very help article here https://stats.idre.ucla.edu/r/codefragments/greek_letters/
我只是有一个解决方法。人们可以首先生成一个 eps 文件,然后使用工具 eps2pgf 将其转换回 pgf。请参阅http://www.texample.net/tikz/examples/eps2pgf/
I just have a workaround. One may first generate an eps file, then convert it back to pgf using the tool eps2pgf. See http://www.texample.net/tikz/examples/eps2pgf/
例如,您可以使用以下内容:
只需记住使用 r'()' 将 LaTeX 表达式括在
paste()
中您还可以在
paste()
函数中添加命名对象。例如,不确定是否有更好的方法可以做到这一点,但上述方法对我有用:)
You can use the following, for example:
Just remember to enclose LaTeX expressions in
paste()
using r'()'You can also add named objects in the
paste()
function. E.g.,Not sure if there are better ways to do this, but the above worked for me :)