2013-03-18 3 views
17

В R я использую expression(theta[l]) так, чтобы метка моей оси графика была такой же, как и $\theta_l$ от LaTeX. По эстетическим соображениям я бы предпочел отобразить $\theta_\ell$. Вы можете мне помочь?Математическое выражение в метке оси

enter image description here


EDIT

Раньше я

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 участок в LaTeX, качество рисунка не так хорошо, как раньше. Есть ли что-то еще, что я могу сделать?

+0

@ agstudy: Windows. Linux тоже подходит для меня. – Marco

+0

@Sven Hohenstein: Спасибо за ваше фото :-) – Marco

+2

ли [это] (http://stackoverflow.com/questions/8190087/italic-greek-letters-latex-style-math-in-plot-titles/8190537# 8190537) что вы ищете? – plannapus

ответ

9

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

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

Вы можете изменить шрифт для этикетки оси х, отделяя его от команды участка и выбора пользовательских шрифтов из функции «заголовка» с чем-то вроде этого:

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

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

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

demo of chart

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

+0

Спасибо, я буду изучать ваш ответ на этой неделе конец :-) – Marco

+0

Где мы находим «windowsFonts»? – Marco

+0

Это шрифты, установленные в вашей системе. Вам просто нужно использовать имя шрифта, поскольку оно зарегистрировано на вашем компьютере. На компьютере с Windows вы можете использовать приложение «Карта символов» (системный инструмент). – Dinre

1

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

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

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

enter image description here

+0

@carelus: Спасибо. появляются как \ ell, когда изображение экспортируется в формате pdf? – Marco

+2

только что проверил и, по-видимому, это не так :-( –

+0

мне тоже. Спасибо в любом случае – Marco

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} 
+0

Если вы устанавливаете на Mac (или Windows), вам, вероятно, потребуется установить соответствующий пакет инструментов и использовать: 'install.packages (« tikzDevice », repos =« http: // R-Forge. R-project.org ")' –

0

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

Смежные вопросы