图像从R markdown推出投影机输出的幻灯片

时间:2015-02-02 18:29:00

标签: r rstudio knitr pandoc r-markdown

我正在使用R markdown v2创建投影仪演示文稿。我的大多数幻灯片都包含由ggplot生成的图像,有时在幻灯片上方有解释性文字。我发现我必须单独调整每张幻灯片上每个元素的大小(即图像,文本等),以确保图像不会被幻灯片的末端推开。

这最终变得非常耗时,并且有点挫败了R降价的既定目的之一:即,快速吐出可重复的研究。

我想知道是否有任何方法可以智能地自动调整各种元素的大小?即使看起来不太好,至少事情也不会被推到最后?或者如果没有,也许人们会使用其他方法来确保事情恰到好处而不会花费太多时间。

提前感谢您的想法...

1 个答案:

答案 0 :(得分:11)

这是一个棘手的问题,因为排版很棘手。 Rmarkdown可以很好地隐藏很多棘手的细节,但是如果你想排版,你需要排版。正如你所看到的,它在乳胶中甚至很难。有很多运动部件,例如标题和图例,渲染图像然后包含在中间.tex文件中,以便pandoc可以使您的.pdf成为ggplot2。如果不要求大量输入(这是你首先想要避免的),就不可能实现完全通用的解决方案。

我不认为创建Beamer演示文稿本身与可重复的研究不兼容,但可能是合法的输出,可能与其他报告一起。

但是在推出Latex之前,你应该考虑一个非常简单的解决方法,即只在每张幻灯片上放置一个图形而不是文本。这可靠地适合幻灯片上的图像。然后,您可以在tikz中使用注释添加其他文本。这就是我要做的。

以下Rmarkdown使用一些复杂的嵌入式Latex来做你想做的或多或少的事情。它确实将图像限制在屏幕的下半部分(但如果您了解有关--- title: "Some beamer slides with figures" author: Somebody date: November 06, 2015 output: beamer_presentation: keep_tex: yes header-includes: - \usepackage{graphicx} - \usepackage{tikzpagenodes} - \usetikzlibrary{calc} - \usepackage{caption} --- ```{r setup, include=FALSE} knitr::opts_chunk$set(echo = FALSE, fig.path="figures/beamer-example/") library(ggplot2) ``` ```{r} mtcars$gear <- factor(mtcars$gear,levels=c(3,4,5), labels=c("3gears","4gears","5gears")) mtcars$am <- factor(mtcars$am,levels=c(0,1), labels=c("Automatic","Manual")) mtcars$cyl <- factor(mtcars$cyl,levels=c(4,6,8), labels=c("4cyl","6cyl","8cyl")) ``` ## A default plot ```{r mpg-plot} qplot(mpg, data=mtcars, geom="density", fill=gear, alpha=I(.5), main="Distribution of Gas Milage", xlab="Miles Per Gallon", ylab="Density") ``` ## test - some text which - fills vertical - space \begin{tikzpicture}[overlay,remember picture] % Caption \node [anchor=south west,outer sep=0pt,inner sep=0pt,text width=\textwidth] (caption) at (current page text area.south west) {% }; % Image \path let \p0 = (0,0), \p1 = (caption.north) in node [inner sep=0pt,outer sep=0pt,anchor=south] at (\x1,\y1) {% \pgfmathsetmacro\imgheight{\y0-\y1-\abovecaptionskip}% \includegraphics[height=\imgheight pt,width=\textwidth,keepaspectratio]{figures/beamer-example/mpg-plot-1}% }; \end{tikzpicture} ## test2 - some text which - fills vertical - space - but squashes - the image badly \begin{tikzpicture}[overlay,remember picture] % Caption \node [anchor=south west,outer sep=0pt,inner sep=0pt,text width=\textwidth] (caption) at (current page text area.south west) {% }; % Image \path let \p0 = (0,0), \p1 = (caption.north) in node [inner sep=0pt,outer sep=0pt,anchor=south] at (\x1,\y1) {% \pgfmathsetmacro\imgheight{\y0-\y1-\abovecaptionskip}% \includegraphics[height=\imgheight pt,width=\textwidth,keepaspectratio]{figures/beamer-example/mpg-plot-1}% }; \end{tikzpicture} ## test3 \begin{tikzpicture}[overlay,remember picture] % Caption \node [anchor=south west,outer sep=0pt,inner sep=0pt,text width=\textwidth] (caption) at (current page text area.south west) {% }; % Image \path let \p0 = (0,0), \p1 = (caption.north) in node [inner sep=0pt,outer sep=0pt,anchor=south] at (\x1,\y1) {% \pgfmathsetmacro\imgheight{\y0-\y1-\abovecaptionskip}% \includegraphics[height=\imgheight pt,width=\textwidth,keepaspectratio]{figures/beamer-example/mpg-plot-1}% }; \end{tikzpicture} ...的更多信息,则可以更改此图像),但会在上部文本块增加时将图像缩放到剩余页面大小。当然,它也可以扩展你的所有传说,但你可以在ggplot2中调整它们。

a:link {color: red}

您可以在以下网址阅读一些血腥细节: https://tex.stackexchange.com/questions/14512/how-to-define-a-figure-size-so-that-it-consumes-the-rest-of-a-page