Получение 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-графиках