2016-10-14 15 views
2

Я создаю слайды на RStudio (версия 0.99.903) в файле R Markdown .Rmd с выходом, установленным в формате PDF (Beamer). На нескольких слайдах я хотел бы вставить сюжет, который находится ниже текста или один на слайде, с кодом, создающим график, который не отображается на экране. Однако, несмотря на многие вещи, которые я пробовал, всегда есть пробел между концом текста и началом фигуры, предположительно, где бы появился фрагмент кода, если бы я не установил echo = FALSE. Например:Удаление пустого пространства из фрагментов кода в .RMD (компиляция knitr в Beamer pdf)

--- 
title: "Untitled" 
author: "Math 35" 
date: "October 14, 2016" 
output: beamer_presentation 
--- 

```{r setup, echo=FALSE, include=FALSE} 
knitr::knit_hooks$set(mysize = function(before, options, envir) { 
    if (before) 
    return(options$size) 
}) 
knitr::opts_chunk$set(size='\\small') 
knitr::opts_chunk$set(warning=FALSE) 
knitr::opts_chunk$set(message=FALSE) 
knitr::opts_chunk$set(fig.align='center') 
``` 

## Recap from Last Time: Continuous Random Variables 
-- Uniform Random Variable $X\sim U(a,b)$ 
$$f_X(x) = \frac{1}{b-a}, a \leq x \leq b$$ 
$$E[X] = \frac{a+b}{2}$$ 
$$Var(X) = \frac{(b-a)^2}{12}$$ 
```{r, echo=FALSE, fig.height=3, fig.width=3.5} 
density <- dunif(x=seq(from=0, to=6, by=0.01), min=1, max=5) 
plot(seq(from=0, to=6, by=0.01), density, col="black", type="l", ylim=c(0, 0.5), lwd=4, xlab="X ~ U(1,5)") 
    lines(c(3,3), c(0,dunif(3, min=1, max=5)), col="red", lwd=2) 
    text(2.9, 0.1, "E[X]=(1+5)/2 = 3", col="purple") 
``` 

Когда я «Вязать PDF» в R Studio, слайд, который производится имеет большое пустое пространство между текстом и фигурой. В результате фигура не помещается на слайде. Я хотел бы удалить это пустое пространство, чтобы все могло поместиться на слайде.

Здесь все кодовые варианты порций, которые я пробовал, не работали:

  • результаты = «скрыть» которая обычно скрыть обычные результаты команды, но до сих пор показывают фигуру, но в этом случае все еще оставляет пустое пространство.

  • strip.white = TRUE

  • аккуратным = TRUE

  • fig.keep = 'высокий'

  • fig.keep = 'последний'

  • изюминкой = ' false '

I' Ве также смотрели на:

  • http://yihui.name/knitr/demo/output/, который относится к https://github.com/yihui/knitr/issues/231, но так как это решает проблему в файле .Rnw, который я не знаком с, я не мог получить, что решение работать. Я попытался разместить предложенный заголовок в верхней части файла .Rmd, но «Knit PDF» не завершил компиляцию. Я, наверное, сделал это неправильно.

  • Я просмотрел справочник R Markdown, в котором я нашел различные варианты, которые я пробовал выше.

Я провел сейчас два часа, пытаясь понять, как заставить фигуру правильно отображаться на одном слайде. Любая помощь будет оценена по достоинству.

+0

ли вы попробовать [R презентации] (https: //support.rstudio.com/hc/en-us/articles/200486468-Authoring-R-Презентации) для слайдов? Чтобы создать PDF-слайды, вам нужно много контролировать и корректировать макет, что я не думаю, что может предоставить обычный RMD. – dracodoc

+0

Спасибо @dracodoc за предложение. Я согласен с тем, что я нахожусь в стороне от Бимера. R Презентации хорошо компилируются на моем образце, но у меня есть несколько файлов презентаций, каждый из которых имеет более 50 слайдов, поэтому переход на синтаксис R Presentations на данный момент является немного обременительным. (Я нахожусь на заключительных этапах редактирования, пытаясь правильно отобразить цифры и т. Д.). Формат вывода ioslides_presentation, похоже, хорошо вписывается в мой .rmd, поэтому я, вероятно, просто переключусь на это. Однако, если есть какие-либо обходные пути для моего вопроса, изложенные выше, я бы хотел их изучить. Благодаря! –

ответ

1

Вы можете играть с par(), но часть проблемы исходит от латексной стороны. Использование среды \begin{center}\end{center} добавляет вертикальное пространство. Вы можете попытаться изменить соответствующий knitr крюк, или просто добавить центрирование инструкцию вручную,

\centering 
```{r, echo=FALSE, fig.height=1.5, fig.width=3.5} 
density <- dunif(x=seq(from=0, to=6, by=0.01), min=1, max=5) 
par(mar=c(2.5,2.5,0.5,0.5), mgp=c(1.5, 0.5, 0), bg="grey95") 
plot(seq(from=0, to=6, by=0.01), density, col="black", type="l", ylim=c(0, 0.5), lwd=4, xlab="X ~ U(1,5)") 
    lines(c(3,3), c(0,dunif(3, min=1, max=5)), col="red", lwd=2) 
    text(2.9, 0.1, "E[X]=(1+5)/2 = 3", col="purple") 
    ``` 

enter image description here

+0

Спасибо @baptiste! Ваш код для изменения поля и других параметров работал для моего файла. Я также нашел другое решение, используя параметр out.width code chunk (см. Мой полный ответ ниже). –

0

Спасибо всем, кто откликнулся. Я установил вариант кода куска out.width='65%' который работал (наряду с изменением YAxis простирается от 0 до 0,3, а не от 0 до 0,5):

--- 
title: "Lecture 5 - The Normal Distribution" 
output: 
    beamer_presentation: 
    highlight: null 
--- 
```{r setup, echo=FALSE, include=FALSE} 
knitr::knit_hooks$set(mysize = function(before, options, envir) { 
    if (before) 
    return(options$size) 
}) 
knitr::opts_chunk$set(size='\\small') 
knitr::opts_chunk$set(echo=TRUE) 
knitr::opts_chunk$set(warning=FALSE) 
knitr::opts_chunk$set(message=FALSE) 
knitr::opts_chunk$set(fig.align='center') 
``` 
## Recap from Last Time: Continuous Random Variables 
-- Uniform Random Variable $X\sim U(a,b)$ 
$$f_X(x) = \frac{1}{b-a}, a \leq x \leq b$$ 
$$E[X] = \frac{a+b}{2}$$ 
$$Var(X) = \frac{(b-a)^2}{12}$$ 

```{r, echo=FALSE,out.width='65%'} 
density <- dunif(x=seq(from=0, to=6, by=0.01), min=1, max=5) 
plot(seq(from=0, to=6, by=0.01), density, col="black", type="l", ylim=c(0, 0.3), lwd=4, xlab="X ~ U(1,5)") 
    lines(c(3,3), c(0,dunif(3, min=1, max=5)), col="red", lwd=2) 
    text(2.9, 0.1, "E[X]=(1+5)/2 = 3", col="purple") 
```