Изображения оттолкнулись от слайдов в выводе бимера из R markdown
Я использую R markdown v2 для создания презентации beamer. Большинство моих слайдов содержат изображение, сгенерированное ggplot, иногда с пояснительным текстом над этим слайдом. Я обнаружил, что мне действительно нужно индивидуально настроить размер каждого элемента (например, изображения, текста и т. д.) На каждом слайде, чтобы гарантировать, что изображение не будет отталкиваться от конца слайда.
Это в конечном итоге становится очень трудоемким, и своего рода поражает одну из заявленных целей R markdown: то есть быть быстрым способ выплюнуть воспроизводимое исследование.
Мне было интересно, есть ли какие-либо способы, чтобы различные элементы разумно авторазмерялись? Даже если это не выглядит здорово, по крайней мере, вещи не будут отталкиваться от конца? Или, если нет, возможно, есть другие методы, которые люди используют, чтобы убедиться, что вещи просто подходят, которые не занимают слишком много времени.
Заранее спасибо за ваши мысли...
1 ответ:
Это сложная проблема, потому что набирать текст сложно.
Я не думаю, что создание презентаций Beamer само по себе несовместимо с воспроизводимыми исследованиями, но является законным результатом, вероятно, наряду с другими отчетами. Но перед запуском в Latex, вы должны рассмотреть очень простой обходной путь, только помещая графику и никакого текста на каждом слайде. Это надежно вписывается в изображение на слайде. Затем вы можете использовать аннотации вRmarkdownхорошо скрывает множество сложных деталей, но если вы хотите набирать текст, вам нужно набирать текст. Это даже в латексе трудно, как вы увидите. Есть так много движущихся частей, например подписи и легенды, рендеринга изображения, которое затем включается в промежуточный файл.tex, так чтоpandocможет сделать вашggplot2для добавления дополнительного текста. Вот что я бы сделал.Следующий Rmarkdown использует сложный бит встроенного латекса, чтобы сделать более-менее то, что вы хотите. Он ограничивает изображение нижней половиной экрана (но это можно изменить, если вы узнаете больше о
tikz...), но масштабирует изображение до оставшегося размера страницы по мере увеличения верхнего текстового блока. Он также, конечно, масштабирует все ваши легенды, но вы можете потенциально настроить их в ggplot2.--- 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}Вы можете прочитать некоторые кровавые детали в: https://tex.stackexchange.com/questions/14512/how-to-define-a-figure-size-so-that-it-consumes-the-rest-of-a-page
Comments