Подтвердить что ты не робот

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

В R я использую expression(theta[l]), чтобы метка моей оси графика была такой же, как $\theta_l$ из LaTeX. По эстетическим соображениям я бы предпочел отобразить $\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, качество фигуры не так хорошо, как раньше. Есть ли что-то еще, что я могу сделать?

4b9b3361

Ответ 1

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

Возникает вопрос о добавлении нотации LaTEX к сюжетам, но для этой локализованной проблемы вопрос заключается в том, чтобы указать шрифт, чтобы пакет базы "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, чтобы сначала сделать пробел. Затем мы загружаем системный шрифт в доступные семейства шрифтов (мне нравится Script MT Bold для выражений). Наконец, мы можем использовать функцию "title", чтобы нарисовать метку оси x и указать семейство для любого текста в этой метке.

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

demo of chart

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

Ответ 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}

Ответ 3

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

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

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

enter image description here

Ответ 4

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