Mettre des plots R dans LaTeX?

je suis un débutant à la fois R et LaTeX et j'ai récemment trouvé comment tracer un graphique de série temporelle standard en utilisant R et enregistrer comme une image png. Ce qui m'inquiète, c'est que le sauvegarder en tant qu'image et l'intégrer dans LaTeX va le mettre à l'échelle et le rendre laid.

y a-t-il un moyen de rendre la sortie 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 donc s'il vous plaît être doux:) Code snippets sont très apprécié!

65
demandé sur hsribei 2009-12-11 22:06:55

4 réponses

Shane est sur place, vous ne voulez Sweave. Finalement.

en tant qu'internaute novice, vous feriez mieux de séparer les tâches. Pour cela, faites ceci:

  1. ouvrir un dispositif: pdf("figures/myfile.pdf", height=6, width=6) .
  2. tracez votre objet R: plot(1:10, type='l', main='boring') -- et rappelez-vous que le réseau et ggplot ont besoin d'un print explicite autour de plot .
  3. important: fermez votre appareil: dev.off() pour finaliser le dossier.
  4. facultatif: consulter 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 plus tôt et notez que l'extension du fichier est facultative.
  6. exécuter ce par le biais de pdflatex et d'en profiter.
51
répondu Dirk Eddelbuettel 2015-10-20 19:29:01

je recommande le paquet tikzDevice pour produire la 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 peuvent être interprétés par le paquet LaTeX tikz . TikZ fournit un très joli système de dessin vectoriel pour LaTeX. Quelques bons exemples de sortie TikZ sont situés à:

http://www.texample.net /

le tikzDevice peut être utilisé comme tout autre dispositif graphique:

require( tikzDevice )

tikz( 'myPlot.tex' )

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

dev.off()

notez que les antislashs dans les macros LaTeX doivent être doublés car R interprète un simple antislash comme un caractère d'échappement. Pour utiliser la parcelle dans un document LaTeX, il suffit de l'inclure:

\include{path/to/myPlot.tex}

le paquet 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 en LaTeX.

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

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

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

  • vous disposez de toute la puissance du typographe LaTeX disponible pour créer une annotation mathématique et pouvez utiliser du code LaTeX arbitraire dans votre texte de figure.

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

  • il n'est pas à bonne échelle pour traiter les parcelles avec beaucoup de composants. Ce sont des choses comme persp() parcelles de grand matricies. Le nombre de cisaillement des éléments graphiques peut faire ralentir LaTeX à un crawl ou manquer de mémoire.

  • l'emballage porte actuellement la mention beta. Cela signifie que l'interface ou des fonctionnalités de l'est sujet à changement si les auteurs trouver une raison impérieuse de le faire.

je dois mettre fin à ce post en démentant que je suis un auteur de la tikzDevice et pgfSweave pour que mon opinion soit biaisée. Cependant, j'ai utilisé les deux paquets de produire plusieurs rapports universitaires dans la dernière année et ont été très satisfaits des résultats.

53
répondu Sharpie 2009-12-12 18:26:05

vous pourriez envisager d'utiliser Sweave . Il y a beaucoup de grande documentation disponible pour cela sur le site Web de Sweave (et ailleurs). Il a une syntaxe très simple: il suffit de mettre votre code R entre <<>>= et @ .

voici un exemple simple qui se termine ressemblant à ce :

\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 construire le document, vous pouvez simplement appeler R CMD Sweave file.Rnw ou exécuter Sweave(file) de L'intérieur de R.

22
répondu Shane 2009-12-11 19:23:04

C'est un dupe d'une question sur pour que je ne puisse 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.

utiliser tikz vous donnera une apparence cohérente avec le reste de votre document, plus il utilisera latex pour dactylographier tout le texte dans vos graphiques.

EDIT prise en LaTeX dans la R Parcelles

3
répondu Mica 2017-05-23 12:26:17