Математическое выражение в метке оси

в R, я использую expression(theta[l]) Так что метка моей оси графика такая же, как $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}

моя фотография была вставлена в латекс.

после комментариев, Вот что я сейчас do:

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 ответов


на самом деле нет причин использовать возможно unmaintained пакет как "tikzDevice" для такой простой проблемы. Часть проблемы с устройством "tikz" заключается в том, что он, похоже, неправильно принимает аргументы "xpinch" и "ypinch", которые определяют разрешение вашего сюжета.

существует больший вопрос добавления латексной нотации в графики, но для этой локализованной проблемы вопрос заключается в указании шрифта для отображения базового пакета " plotmath скоропись для тебя.

вы можете изменить шрифт для вашей метки оси x, отделив его от команды plot и выбрав пользовательский шрифт из функции "title" С чем-то вроде этого:

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

то, что мы сделали,-это указать нулевую метку для оси x в команде plot, чтобы сначала сделать пространство. Затем мы загружаем системный шрифт в доступные семейства шрифтов (мне нравится скрипт Mt Bold для выражений). Наконец, мы можем использовать функцию 'title' для построения метка оси x и укажите семейство для любого текста в этой метке.

делая это, мы сохраняем все исходные функциональные возможности устройства построения, так что вы больше не должны иметь падение разрешения при преобразовании в PDF.

demo of chart

теперь, если у кого-то есть хорошее решение проблемы латексной нотации за пределами пакета "tikzDevice", я хотел бы услышать об этом. Единственный способ сделать это хорошо-перевернуть модель и использовать 'tikz' Пакет LaTEX, чтобы нарисовать всю графику вручную из файла LaTEX или использовать пакет "pixmap" R, чтобы нарисовать изображение моего выражения поверх графика. Ни то, ни другое не кажется идеальным подходом.


Я думаю tikzDevice is сюда. Вы можете установить из R-forge.

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

философия tikz /pgf заключается в создании сюжета, который может быть набран. Вероятно, вы захотите, чтобы они соответствовали вашему документу. Например, с теми же пакетами, шрифтами, размером шрифта и т. д.

вы можете установить эти вещи в вызове tikz установка

параметры, такие как документ декларация

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

пакетов

tikzLatexPackages (или похожие)

вы также можете контролировать размер шрифта.

все эти вещи подробно описаны в

?тикздевице.


вы также можете использовать 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}

Это довольно грязное решение, но оно делает это:

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

первый участок с символом тета. Затем добавьте символ \ell с меньшим размером шрифта и вручную установите позицию.

enter image description here


Я нашел обходной путь здесь. Они объясняют длительный процесс, чтобы кодировка работала со стандартным устройством pdf. В противном случае устройство CairoPDF можно использовать, установив Каир. Тогда что-то вроде xlab="\u2113" появится в pdf, используя решение @Julián Urbano. Мне не удалось использовать символ в выражении.