web-dev-qa-db-fra.com

Obtenir des tracés R dans LaTeX?

Je suis novice à la fois pour R et LaTeX et j'ai récemment découvert comment tracer un graphique de série chronologique standard à l'aide de R et l'enregistrer en tant qu'image png. Ce qui m'inquiète, c'est que l'enregistrer en tant qu'image puis l'incorporer dans LaTeX va le mettre à l'échelle et le rendre laid.

Existe-t-il un moyen de faire de la fonction plot() de R un graphique vectoriel et de l'intégrer dans LaTeX? Je suis un débutant total dans les deux, alors soyez gentil :) Les extraits de code sont très appréciés!

67
hsribei

Shane est parfait, vous voulez Sweave. Finalement.

En tant que débutant, vous feriez mieux de séparer la tâche. Pour cela, faites ceci:

  1. ouvrez un appareil: pdf("figures/myfile.pdf", height=6, width=6).
  2. tracez votre objet R: plot(1:10, type='l', main='boring') - et rappelez-vous que lattice et ggplot ont besoin d'un print explicite autour de plot.
  3. important: fermez votre appareil: dev.off() pour finaliser le fichier.
  4. facultatif: inspectez le fichier pdf.
  5. dans LaTeX, utilisez usepackage{graphicx} dans l'en-tête du document, utilisez
    \includegraphics[width=0.98\textwidth]{figures/myfile} pour inclure la figure créée précédemment et notez que l'extension de fichier est facultative.
  6. exécutez ceci à travers pdflatex et profitez-en.
56
Dirk Eddelbuettel

Je recommanderais le package tikzDevice pour produire une sortie à inclure dans les documents LaTeX:

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

Le tikzDevice convertit les graphiques produits en R en code qui peut être interprété par le package LaTeX tikz. TikZ fournit un très joli système de dessin vectoriel pour LaTeX. Quelques bons exemples de sortie TikZ se trouvent à:

http://www.texample.net/

tikzDevice peut être utilisé comme n'importe quel autre périphérique graphique R:

require( tikzDevice )

tikz( 'myPlot.tex' )

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

dev.off()

Notez que les barres obliques inverses dans les macros LaTeX doivent être doublées car R interprète une barre oblique inverse unique comme un caractère d'échappement. Pour utiliser le tracé dans un document LaTeX, incluez-le simplement:

\include{path/to/myPlot.tex}

Le package pgfSweave contient la fonctionnalité Sweave qui peut gérer l'étape ci-dessus pour vous. Assurez-vous que votre document contient \usepackage{tikz} Quelque part dans le préambule de LaTeX.

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

Les avantages de la fonction tikz() par rapport à la fonction pdf() sont:

  • La police des étiquettes et des légendes dans vos figures correspond toujours à la police utilisée dans votre document LaTeX. Cela donne un aspect unifié à votre document.

  • Vous disposez de toute la puissance de la typographe LaTeX pour créer des annotations mathématiques et pouvez utiliser du code LaTeX arbitraire dans le texte de votre figure.

Les inconvénients de la fonction tikz() sont:

  • Il ne s'adapte pas bien pour gérer des parcelles avec beaucoup de composants. Ce sont des choses comme persp() parcelles de grandes matricies. Le nombre de cisaillement des éléments graphiques peut ralentir LaTeX à une analyse ou manquer de mémoire.

  • Le package est actuellement marqué en version bêta. Cela signifie que l'interface ou la fonctionnalité du package est susceptible de changer si les auteurs trouvent une raison impérieuse de le faire.

Je devrais terminer ce post en niant que je suis un auteur des packages tikzDevice et pgfSweave, donc mon opinion peut être biaisée. Cependant, j'ai utilisé les deux packages pour produire plusieurs rapports académiques au cours de la dernière année et j'ai été très satisfait des résultats.

58
Sharpie

Vous voudrez peut-être envisager d'utiliser Sweave . Il y a beaucoup de documentation disponible sur le site Web Sweave (et ailleurs). Sa syntaxe est très simple: il suffit de mettre votre code R entre <<>>= Et @.

Voici un exemple simple qui finit par ressemblant à ceci :

\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}

Pour créer le document, vous pouvez simplement appeler R CMD Sweave file.Rnw Ou exécuter Sweave(file) à partir de R.

22
Shane

Ceci est une dupe d'une question sur SO que je ne peux pas trouver.

Mais: http://r-forge.r-project.org/projects/tikzdevice/ - sortie tikz de r et http://www.rforge.net/pgfSweave/ code tikz via sweave.

L'utilisation de tikz vous donnera un aspect cohérent avec le reste de votre document, en plus il utilisera du latex pour composer tout le texte de vos graphiques.

[~ # ~] modifier [~ # ~] Obtenir LaTeX dans les tracés R

3
Mica