Получение R заговоров в LaTeX?
Я новичок и в R, и в LaTeX, и совсем недавно обнаружил, как построить стандартный график временных рядов, используя R, и сохранить его в виде изображения в формате png. Что меня беспокоит, так это то, что сохранение его как изображения, а затем встраивание его в LaTeX приведет к его масштабированию и ухудшению.
Есть ли способ сделать R's plot()
функция выводит векторную графику и встраивает ее в LaTeX? Я абсолютный новичок в обоих случаях, поэтому, пожалуйста, будьте осторожны:) Фрагменты кода очень ценятся!
4 ответа
Шейн на месте, ты хочешь 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
и наслаждаться.
Я бы порекомендовал tikzDevice
пакет для создания выходных данных для включения в документы LaTeX:
http://cran.r-project.org/web/packages/tikzDevice/index.html
TikzDevice преобразует графику, созданную в R, в код, который может быть интерпретирован пакетом LaTeX tikz
, TikZ предоставляет очень хорошую систему векторного рисования для LaTeX. Несколько хороших примеров вывода TikZ находятся по адресу:
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.
Преимущества 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-графики