2012-12-28 10 views
14

W przeszłości używałem RStudio do tworzenia ggplot2, a następnie eksportowałem je jako pliki PDF z poziomu RSudio. Działa to fantastycznie.Osadzanie danych ggplot2 w LaTeX pdf przy użyciu knitr i RStudio

Teraz próbuję zautomatyzować używanie knitr, ale mam problem z ustaleniem, gdzie ustawić wysokość i wagę wykresu, aby uzyskać wysoką jakość wydruku.

Oto moja aktualna próba, ale wykresy "obok siebie" nie są, obrócony wykres poziomy nie jest, a rozdzielczość wydaje się niska.

Byłbym wdzięczny za radę. Wydaje się, że zarówno ggplot2, jak i knitr są aktywnie rozwijane, co jest świetne, jednak wyszukiwanie w Internecie doprowadziło mnie do szału. LaTeX jest dla mnie nowy. Doceniam również wszelkie ogólne strategie przepływu pracy dla tego zestawu narzędzi. Z góry dziękuję.

\documentclass[letterpaper]{article} 
\usepackage{lscape} 
\begin{document} 
<<load, echo=FALSE, results='hide', warning=FALSE, message=FALSE>>= 
require(ggplot2) 
@ 

Two on the first page. 
<<first, echo=FALSE, fig.height=3, fig.cap="This is first", fig.pos='h'>>= 
ggplot(mtcars, aes(mpg, wt))+geom_point()+facet_grid(vs ~ am, margins=TRUE) 
@ 

Blah, blah, blah. 
<<second, echo=FALSE, fig.height=3, fig.cap="This is second", fig.pos='h'>>= 
ggplot(mtcars, aes(mpg, wt))+geom_point()+facet_grid(vs ~ am, margins=TRUE) 
@ 
\newpage 
Second page. 

Side by side images: 

<<third, echo = FALSE, out.width="2in", fig.cap='Side by side'>>= 
ggplot(mtcars, aes(mpg, wt))+geom_point()+facet_grid(vs ~ am, margins=TRUE) 
ggplot(mtcars, aes(mpg, wt))+geom_point()+facet_grid(vs ~ am, margins=TRUE) 
@ 
\newpage 
\begin{landscape} 
This page is rotated 
<<fourth, echo = FALSE, out.width="4in", fig.cap='Landscape'>>= 
ggplot(mtcars, aes(mpg, wt))+geom_point()+facet_grid(vs ~ am, margins=TRUE) 
@ 
\end{landscape} 
\end{document} 

Odpowiedz

9

mogę Ci większość drogi tam:

\documentclass[letterpaper]{article} 
\usepackage{lscape} 
\usepackage{float} 
\begin{document} 
<<load, echo=FALSE, results='hide', warning=FALSE, message=FALSE>>= 
require(ggplot2) 
@ 

Two on the first page. 
<<first, echo=FALSE, fig.height=3, fig.cap="This is first", fig.pos='h'>>= 
ggplot(mtcars, aes(mpg, wt))+geom_point()+facet_grid(vs ~ am, margins=TRUE) 
@ 

Blah, blah, blah. 
<<second, echo=FALSE, fig.height=3, fig.cap="This is second", fig.pos='h'>>= 
ggplot(mtcars, aes(mpg, wt))+geom_point()+facet_grid(vs ~ am, margins=TRUE) 
@ 

\newpage 
Second page. 

Side by side images: 

\begin{figure}[H] 
<<third, echo = FALSE, out.width="0.48\\linewidth",fig.width = 3.5,fig.height=2>>= 
ggplot(mtcars, aes(mpg, wt))+geom_point()+facet_grid(vs ~ am, margins=TRUE) 
ggplot(mtcars, aes(mpg, wt))+geom_point()+facet_grid(vs ~ am, margins=TRUE) 
@ 
\caption{Side by side} 
\end{figure} 

\newpage 
\begin{landscape} 
This page is rotated. 
<<fourth, echo = FALSE, fig.width = 4,fig.height = 3,out.width = "0.9\\linewidth">>= 
ggplot(mtcars, aes(mpg, wt))+geom_point()+facet_grid(vs ~ am, margins=TRUE) 
@ 
\end{landscape} 
\end{document} 

Jakość wygląda dobrze dla mnie, ale tylko wtedy, gdy używam przeglądarki PDF (Preview systemu, OS X). Wbudowana przeglądarka plików RStudio PDF miała problemy z renderowaniem w przeszłości, więc jej nie używam.

Nie jestem pewien, jak wymusić figurę na stronie poziomej poniżej tekstu. Zwykle robiłbym to z pakietem float, tak jak w poprzednich liczbach, ale nie wydaje się, żeby działał w krajobrazie. Polecam, abyś skonsultował się z ludźmi na stronie tex.stackexchange.com, ponieważ jest to dość specyficzne dla LaTeX.

Brak zależności między fig.width, fig.height i out.width. Graj z obu i zobacz, co dzieje się z rozmiarem obrazu, a także skalowaniem elementów w obrazie. Jeden wpływa na rzeczywisty rozmiar figury, gdy jest tworzony, a drugi wpływa na skalowanie tego obrazu, gdy jest on uwzględniony w dokumencie LaTeX (myślę).

Należy również zauważyć, że użyłem \caption{} w środowisku rysunkowym dla side-by-side, ponieważ w przeciwnym razie spróbuje utworzyć podpis dla każdej figury.

6

Nie jestem pewien obróconego czwartej stronie, ale coraz side-by-side działek wymaga fig.show='hold' i out.width='.45\\linewidth'

<<third, echo = FALSE, out.width="2in", fig.cap='Side by side',out.width='.45\\linewidth',fig.show='hold'>>= 
ggplot(mtcars, aes(mpg, wt))+geom_point()+facet_grid(vs ~ am, margins=TRUE) 
ggplot(mtcars, aes(mpg, wt))+geom_point()+facet_grid(vs ~ am, margins=TRUE) 
@ 
Powiązane problemy