18

过去,我使用 RStudio 创建 ggplot2,然后从 RSudio 将它们导出为 PDF。这非常有效。

我现在正在尝试使用 knitr 实现自动化,但我无法弄清楚在哪里设置图形高度和重量以创建高质量的输出。

这是我目前的尝试,但“并排”图不是,旋转横向图不是,而且分辨率似乎很低。

我会很感激任何建议。似乎 ggplot2 和 knitr 都在积极开发中,这很好,但是,互联网搜索让我感到困惑。LaTeX 对我来说是新的。我也很欣赏这套工具的任何一般工作流程策略。提前致谢。

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

2 回答 2

10

我可以带你去那里的大部分地方:

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

质量对我来说看起来不错,但前提是我使用我的系统 PDF 查看器(预览版,OS X)。内置的 RStudio PDF 查看器过去对我有一些渲染问题,所以我不使用它。

我不确定如何强制横向页面上的图形位于文本下方。通常,我会像之前的数字一样使用 float 包来执行此操作,但它似乎不适用于横向。我建议您咨询 tex.stackexchange.com 上的相关人员,因为它是相当特定于 LaTeX 的。

不是和之间fig.width的相互作用。两者都玩,看看图像的大小与图像中元素的缩放比例会发生什么变化。一个影响创建时的实际图形大小,另一个影响该图像在包含在 LaTeX 文档中时的缩放方式(我认为)。fig.heightout.width

另请注意,我\caption{}在图形环境中并排使用了,否则它将尝试为每个图形创建标题。

于 2012-12-28T20:12:45.737 回答
6

不确定旋转的第四页,但获得并排的图需要fig.show='hold'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)
@
于 2012-12-28T23:39:19.717 回答