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é!
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:
- ouvrir un dispositif:
pdf("figures/myfile.pdf", height=6, width=6)
. - tracez votre objet R:
plot(1:10, type='l', main='boring')
-- et rappelez-vous que le réseau et ggplot ont besoin d'unprint
explicite autour deplot
. - important: fermez votre appareil:
dev.off()
pour finaliser le dossier. - facultatif: consulter le fichier pdf.
- 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. - exécuter ce par le biais de
pdflatex
et d'en profiter.
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 à:
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.
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.
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.
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.