Получение R заговоров в LaTeX?

Я новичок и в R, и в LaTeX, и совсем недавно обнаружил, как построить стандартный график временных рядов, используя R, и сохранить его в виде изображения в формате png. Что меня беспокоит, так это то, что сохранение его как изображения, а затем встраивание его в LaTeX приведет к его масштабированию и ухудшению.

Есть ли способ сделать R's plot() функция выводит векторную графику и встраивает ее в LaTeX? Я абсолютный новичок в обоих случаях, поэтому, пожалуйста, будьте осторожны:) Фрагменты кода очень ценятся!

4 ответа

Решение

Шейн на месте, ты хочешь Sweave. В конце концов.

Как новичок, вы можете лучше отделить задачу, хотя. Для этого сделайте это:

  1. открыть устройство: pdf("figures/myfile.pdf", height=6, width=6),
  2. построить свой объект R: plot(1:10, type='l', main='boring') - и помните, что решетке и ggplot нужен явный print вокруг plot,
  3. важно: закройте ваше устройство: dev.off() чтобы завершить файл.
  4. необязательно: проверьте файл PDF.
  5. в LaTeX используйте usepackage{graphicx} в заголовке документа используйте
    \includegraphics[width=0.98\textwidth]{figures/myfile} включить фигуру, созданную ранее, и отметить, что расширение файла не является обязательным.
  6. пропустить это через pdflatex и наслаждаться.

Я бы порекомендовал tikzDevice пакет для создания выходных данных для включения в документы LaTeX:

http://cran.r-project.org/web/packages/tikzDevice/index.html

TikzDevice преобразует графику, созданную в R, в код, который может быть интерпретирован пакетом LaTeX tikz, TikZ предоставляет очень хорошую систему векторного рисования для LaTeX. Несколько хороших примеров вывода TikZ находятся по адресу:

http://www.texample.net/

tikzDevice может использоваться как любое другое графическое устройство R:

require( tikzDevice )

tikz( 'myPlot.tex' )

plot( 1, 1, main = '\\LaTex\\ is $\\int e^{xy}$' )

dev.off()

Обратите внимание, что обратная косая черта в макросах LaTeX должна быть удвоена, так как R интерпретирует одну обратную косую черту как escape-символ. Чтобы использовать график в документе LaTeX, просто включите его:

\include{path/to/myPlot.tex}

pgfSweave пакет содержит Sweave функциональность, которая может обработать вышеуказанный шаг для вас. Убедитесь, что ваш документ содержит \usepackage{tikz} где-то в преамбуле LaTeX.

http://cran.r-project.org/

Преимущества tikz() функция по сравнению с pdf() являются:

  • Шрифт надписей и подписей на ваших рисунках всегда совпадает со шрифтом, используемым в вашем документе LaTeX. Это обеспечивает единый вид вашего документа.

  • У вас есть все возможности набора текста LaTeX для создания математической аннотации и вы можете использовать произвольный код LaTeX в тексте вашего рисунка.

Недостатки tikz() функции являются:

  • Он плохо масштабируется для обработки участков с большим количеством компонентов. Это такие вещи, как persp() участки больших матриц. Число сдвигов графических элементов может вызвать замедление LaTeX для сканирования или нехватку памяти.

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

Я должен закончить этот пост, отказавшись от того, что я являюсь автором tikzDevice а также pgfSweave пакеты, так что мое мнение может быть предвзятым. Тем не менее, я использовал оба пакета для подготовки нескольких академических отчетов за последний год и был очень доволен результатами.

Вы можете рассмотреть возможность использования Sweave. Для этого есть много отличной документации на сайте Sweave (и в других местах). Он имеет очень простой синтаксис: просто поместите ваш код R между <<>>= а также @,

Вот простой пример, который выглядит примерно так:

\documentclass[a4paper]{article}

\title{Sweave Example 1}
\author{Friedrich Leisch}

\begin{document}

\maketitle

In this example we embed parts of the examples from the
\texttt{kruskal.test} help page into a \LaTeX{} document:

<<>>=
data(airquality)
library(ctest)
kruskal.test(Ozone ~ Month, data = airquality)
@
which shows that the location parameter of the Ozone 
distribution varies significantly from month to month. Finally we
include a boxplot of the data:

\begin{center}
<<fig=TRUE,echo=FALSE>>=
boxplot(Ozone ~ Month, data = airquality)
@
\end{center}

\end{document}

Чтобы построить документ, вы можете просто позвонить R CMD Sweave file.Rnw или беги Sweave(file) изнутри R.

Это дурацкий вопрос о SO, который я не могу найти.

Но: http://r-forge.r-project.org/projects/tikzdevice/ - вывод tikz из r и http://www.rforge.net/pgfSweave/ код tikz с помощью sweave.

Использование tikz даст вам внешний вид, соответствующий остальной части вашего документа, плюс он будет использовать латекс для набора текста всего текста на ваших графиках.

РЕДАКТИРОВАТЬ Получение LaTeX в R-графики

Другие вопросы по тегам