2013-03-18 81 views
17

在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')) 

然而,当我插入乳胶resuling情节,图的质量没有以前好了。还有什么我可以做的吗?

+0

@agstudy:Windows。 Linux对我来说也很好。 – Marco 2013-03-18 15:32:49

+0

@Sven Hohenstein:谢谢你的照片:-) – Marco 2013-03-18 15:47:20

+2

Is [this](http://stackoverflow.com/questions/8190087/italic-greek-letters-latex-style-math-in-plot-titles/8190537# 8190537)你在找什么? – plannapus 2013-03-18 15:51:23

回答

9

对于这样一个简单的问题,真的没有理由使用像'tikzDevice'这样的possibly unmaintained package。 “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轴指定一个空标签以首先创建空间。然后,我们将系统字体加载到可用的字体系列(我喜欢用于表达式的脚本MT Bold)。最后,我们可以使用'标题'功能绘制x轴标签并为该标签中的任何文本指定族。

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

demo of chart

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

+0

谢谢,我将在本周研究你的答案结束:-) – Marco 2013-03-22 21:25:15

+0

我们在哪里可以找到“windowsFonts”? – Marco 2013-03-26 05:31:04

+0

这些是您的系统上安装的字体。您只需使用在计算机上注册的字体名称即可。在Windows计算机上,可以使用Character Map应用程序(系统工具)。 – Dinre 2013-03-26 11:46:09

1

这是一个很肮脏的解决方案,但它使:

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

第一条曲线与THETA符号。然后添加小字号的\ ell符号并手动设置位置。

enter image description here

+0

@carelus:谢谢。当以pdf格式导出图像时显示为\ ell? – Marco 2013-03-23 07:59:13

+2

刚刚检查过,显然它没有:-( – 2013-03-23 19:21:04

+0

我也没有,谢谢不管怎么说 – Marco 2013-03-23 19:26:29

2

我觉得tikzDevice去这里的路。您可以从R-forge安装。

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

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

您可以在通话中通过设置

选项,比如文档声明

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

包设置这些东西tikz

tikzLatexPackages(或相似)

您还可以控制字体大小。

所有这些东西都在

?tikzDevice中详细说明。


你也可以使用knitr一个有文化的编程文档中创建您的地块(.rnw)

在这种情况下,使用创建一个PDF一个tikz设备(如外部= 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} 
+0

如果您在Mac(或Windows)上安装,您可能需要安装适当的工具包并使用:'install.packages(“tikzDevice”,repos =“http:// R-Forge。 R-project.org“)' – 2013-03-27 18:00:43

0

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