2012-05-13 14 views
22

Sto usando knitr da un paio di giorni, è fantastico! :)Allinea i grafici uno accanto all'altro con knitr

Al momento non riesco a allineare due trame l'una accanto all'altra nel file di output (un PDF). Dalla mia comprensione ciò dovrebbe essere ottenuto impostando out.width='.4\\linewidth' o qualcosa di simile nelle opzioni del blocco.

I grafici risultanti sono piuttosto piccoli, 2 si accoppiano abbastanza facilmente uno accanto all'altro, ma in qualche modo, vengono posizionati tutti l'uno sotto l'altro.

Ho anche problemi ad allineare i tavoli in lattice (xtable -output con results='asis' -option) alla sinistra del documento. Sarebbe bello scrivere accanto ad esso.

+1

Puoi fornire un semplice esempio minimale. Il file rw che lo illustra non funziona? – joran

+0

utilizzando par (mfrow = c (1, 2)) nel blocco codice non lo fa? – Kay

risposta

18

Poiché non hai fornito uno, lo farò per voi:

\documentclass{article} 
\begin{document} 

Side by side images: 

\begin{figure}[htpb] 
<<myChunk, fig.width=3, fig.height=2.5, out.width='.49\\linewidth', fig.show='hold'>>= 
par(mar=c(4,4,.1,.1),cex.lab=.95,cex.axis=.9,mgp=c(2,.7,0),tcl=-.3) 
plot(cars) 
boxplot(cars$dist,xlab='dist') 
@ 
\end{figure} 

Ta da! 

\end{document} 

che si traduce in qualcosa che assomiglia più o meno così per me quando ho eseguito knitr:

enter image description here

Si noti il ​​giochetto con le impostazioni par per assicurarsi che tutto sia piacevole. Si sarà devono armeggiare.

Questo esempio riproducibile minimo è stato derivato dal molto dettagliato examples sul sito Web knitr.

Modifica

Per rispondere alla tua seconda domanda, anche se è più di una domanda LaTeX puro, ecco un esempio minimo:

\documentclass{article} 
\usepackage{wrapfig,lipsum} 
%------------------------------------------ 
\begin{document} 
This is where the table goes with text wrapping around it. You may 
embed tabular environment inside wraptable environment and customize as you like. 
%------------------------------------------ 
\begin{wraptable}{l}{5.5cm} 
\caption{A wrapped table going nicely inside the text.}\label{wrap-tab:1} 
<<mychunk,results = asis,echo = FALSE>>= 
library(xtable) 
print(xtable(head(cars)),floating = FALSE) 
@ 
\end{wraptable} 
%------------------------------------------ 
\lipsum[2] 
\par 
Table~\ref{wrap-tab:1} is a wrapped table. 
%------------------------------------------ 
\end{document} 

Ancora una volta, il codice semplicemente adattato ho trovato in this domanda allo sorprendentemente utile sito tex.stackexchange.com.

+0

Cosa succede se hai due trame di dimensioni molto diverse? Devo posizionare la legenda per una trama accanto ad essa e non so come arrivarci. –

+1

Come inseriresti questo in un chunk standard ** di RMarkdown **? –

Problemi correlati