【问题标题】:Mathematical expression in axis label轴标签中的数学表达式
【发布时间】:2013-03-06 23:33:46
【问题描述】:

在 R 中,我使用 expression(theta[l]),以便绘图轴的标签与 LaTeX 中的 $\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 中。

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

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 中插入结果图时,图形的质量不如以前。还有什么我可以做的吗?

【问题讨论】:

  • @agstudy:Windows。 Linux 也适合我。
  • @Sven Hohenstein:谢谢你的照片 :-)
  • this 是您要找的吗?
  • @plannapus:嗯,有趣!我会调查那个包:-)
  • 这适用于cairo_pdfplot(1:10, main = "\u2113")。编辑:我刚刚意识到你想要 theta_ell,那可能对那里没有帮助......

标签: r plot latex axis-labels plotmath


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    我认为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}
    

    【讨论】:

    • 如果您在 Mac(或 Windows)上安装,您可能需要安装正确的工具包并使用:install.packages("tikzDevice", repos="http://R-Forge.R-project.org")
    【解决方案3】:

    这是一个有点脏的解决方案,但它确实做到了:

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

    第一个带有 theta 符号的绘图。然后添加字体较小的\ell符号并手动设置位置。

    【讨论】:

    • @carelus:谢谢。图片以pdf格式导出时,是否仍显示为\ell?
    • 刚刚检查过,显然没有:-(
    • 行为将取决于 pdf-viewer 的字体映射。在使用 Preview.app 作为查看器的 Mac 上,它确实以相同的草书 ell 出现。您的查看器需要有适当的符号字体才能获得相同的行为,我相信 Windows 查看器通常没有为此正确设置。
    • @Dwin:感谢您的精确。您对 windows 上的 pdf-viewer 有什么建议吗?
    【解决方案4】:

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

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

    您可以通过将 x 轴标签从绘图命令中分离出来并从“标题”函数中选择自定义字体来更改 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 包在情节的顶部。两者都不是完美的方法。

    【讨论】:

    • 我们在哪里可以找到“windowsFonts”?
    • 这些是您系统上安装的字体。您只需要使用在计算机上注册的字体名称即可。在 Windows 计算机上,您可以使用字符映射应用程序(系统工具)。
    • windowsFonts 是一个可以显示交互式图形设备当前可用的字体映射的函数,它可以用来分配新的映射。它显然只在... Windows 上可用。 Mac (quartzFonts) 和 Nix ("X11Fonts) 上都有对应的功能。
    • 我认为它正在维护中。我检查时它已于 2015 年 1 月 7 日更新。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-03
    • 1970-01-01
    • 1970-01-01
    • 2012-05-29
    相关资源
    最近更新 更多