17

在 R 中,我使用这样我的绘图轴的标签与来自 LaTeXexpression(theta[l])的标签相同。$\theta_l$出于审美原因,我宁愿展示$\theta_\ell$. 你能帮助我吗?

在此处输入图像描述


编辑

之前,我做过

plot(1:10, 1:10, xlab=expression(theta[l]))

我将生成的图片导出为 pdf 格式。然后,使用

\begin{figure}[htbp]
\centerline{\includegraphics[scale=.6]{test.pdf}}
\end{figure}

我的图片被插入到 LaTeX 中。

在评论之后,这是我现在要做的:

require(tikzDevice)
tikz("test.tex", standAlone=TRUE, width=5, height=5)

plot(1:10, 1:10, xlab="$\\theta_\\ell$")

dev.off()
tools::texi2pdf('test.tex')
system(paste(getOption('pdfviewer'),'test.pdf'))

但是,当我在 LaTeX 中插入结果图时,图形的质量不如以前。我还能做些什么吗?

4

4 回答 4

9

对于这样一个简单的问题,真的没有理由使用像“tikzDevice”这样可能未维护的包。'tikz' 设备的部分问题在于它似乎没有正确接受指定绘图分辨率的 'xpinch' 和 'ypinch' 参数。

将 LaTEX 符号添加到绘图有一个更大的问题,但对于这个本地化问题,问题是指定字体以使基本 'plotmath' 包为您显示草书字母。

您可以通过将其从绘图命令中分离出来并从“标题”函数中选择自定义字体来更改 x 轴标签的字体,如下所示:

plot(1:10, 1:10, xlab="")
windowsFonts(script=windowsFont("Script MT Bold"))
title(xlab=expression(theta[l]), family="script")

我们所做的是在 plot 命令中为 x 轴指定一个空标签,以首先腾出空间。然后,我们将系统字体加载到可用的字体系列中(我喜欢 Script MT Bold 用于表达式)。最后,我们可以使用 'title' 函数绘制 x 轴标签并为该标签中的任何文本指定族。

通过这样做,我们保留了绘图设备的所有原始功能,因此在转换为 PDF 时不应再出现分辨率下降的问题。

图表演示

现在,如果有人对 'tikzDevice' 包之外的 LaTEX 符号问题有一个好的解决方案,我很想听听。我知道做到这一点的唯一方法是翻转模型并使用“tikz”LaTEX 包从 LaTEX 文件中手动绘制整个图形,或者使用“pixmap”R 包在情节的顶部。两者都不是一个完美的方法。

于 2013-03-22T15:46:47.570 回答
3

我认为这tikzDevice 去这里的方式。您可以从R-forge.

install.packages("tikzDevice", repos="http://R-Forge.R-project.org")

tikz /pgf 的理念是创建一个可以排版的情节。您可能希望这些与您的文档保持一致。例如,使用相同的包、字体、字体大小等

tikz您可以通过设置在调用中设置这些内容

文件声明等选项

options(tikzDocumentDeclaration = "\\documentclass[10pt]{article}")

tikzLatexPackages(或类似的)

您还可以控制字体大小。

所有这些东西都在

?tikzDevice.


您还可以使用knitr在文字编程文档 (.rnw) 中创建绘图

在这种情况下,使用 tikz 设备创建一个 pdf(作为 external = TRUE),使用与整个文档相同的文档声明和标题/包。

\documentclass[12pt,a4paper]{article}

\begin{document}

<<setup, include = FALSE>>=
opts_chunk$set(dev = 'tikz', external = TRUE)
@


<<myplot, fig.width=5, fig.height = 5, echo=FALSE>>=
plot(1:10, 1:10, xlab="$\\theta_\\ell$")
@

\end{document}
于 2013-03-25T03:02:09.073 回答
1

这是一个有点脏的解决方案,但它使它:

plot(1,1, xlab=expression(theta))
title(xlab="    \u2113",line=3.2,cex.lab=.7)

首先用 theta 符号绘制。然后添加字体较小的\ell符号并手动设置位置。

在此处输入图像描述

于 2013-03-22T20:14:55.530 回答
1

我在这里找到了解决方法。他们确实解释了使编码与标准 pdf 设备一起工作的漫长过程。否则,可以通过安装Cairo包来使用 CairoPDF 设备。然后xlab="\u2113"使用@Julián Urbano 的解决方案会在 pdf 中显示类似的内容。我没有运气在表达式中使用该字符。

于 2014-10-29T02:41:20.247 回答