轴标签中的数学表达式

时间:2013-03-18 15:06:13

标签: r plot latex axis-labels plotmath

在R中,我使用expression(theta[l]),以便我的绘图轴的标签与LaTeX的$\theta_l$相同。出于美学原因,我更愿意展示$\theta_\ell$。你能救我吗?

enter image description here


修改

之前,我做过

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 个答案:

答案 0 :(得分:9)

对于这样一个简单的问题,没有理由使用possibly unmaintained package之类的'tikzDevice'。 'tikz'设备的部分问题在于它似乎没有正确接受指定绘图分辨率的'xpinch'和'ypinch'参数。

在绘图中添加LaTEX表示法有一个更大的问题,但对于这个本地化问题,问题是指定字体以使基础'plotmath'包显示草书字母。

您可以通过将其与plot命令分离并从'title'函数中选择自定义字体来更改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时不应再有分辨率下降。

demo of chart

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

答案 1 :(得分: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(外部= 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}

答案 2 :(得分:1)

这是一个有点肮脏的解决方案,但它确实如此:

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

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

enter image description here

答案 3 :(得分:1)

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