Получение R-графики в LaTeX?

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

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

Ответ 1

Шейн спот-он, вы хотите Sweave. В конце концов.

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

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

Ответ 2

Я бы порекомендовал пакет 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, поэтому мое мнение может быть предвзятым. Тем не менее, я использовал оба пакета для подготовки нескольких академических отчетов за последний год и был очень доволен результатами.

Ответ 3

Вы можете рассмотреть возможность использования 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.

Ответ 4

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

Но: http://r-forge.r-project.org/projects/tikzdevice/ - вывод tikz из r а также http://www.rforge.net/pgfSweave/ код tikz через sweave.

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

ИЗМЕНИТЬ Получение LaTeX в R-графиках