2017-01-17 5 views
0

Я хочу показать несколько разных сюжетов на моем блестящем приложении, отделяя их в маленьких именованных разделах (используя Markdown's ###). Тем не менее, графики, которые я печатаю внутри этих разделов, сокращены. Не только это, но когда я изменяю свой атрибут data-height, они растягиваются, чтобы гарантировать, что они все равно будут разрезаны.ggplot2 участок растягивается в flexdashboard и вырезает нижнюю часть

enter image description here

enter image description here

я мог бы быть в состоянии установить значение данных высоты, что является достаточно большим, что она не будет сокращать изображение вообще, но тогда это будет крайне деформированной. Как сохранить сюжет того же размера при изменении размера раздела? Или даже лучше, возможно ли сделать так, чтобы размер раздела автоматически соответствовал размеру сюжета?

--- EDIT:

--- 
title: "title" 
author: "author" 
date: "date" 
output: 
    flexdashboard::flex_dashboard: 
    orientation: columns 
    vertical_layout: scroll 
    logo: "" 
    favicon: "" 
    source_code: embed 
    runtime: shiny 
runtime: shiny 
--- 

```{r setup, include=FALSE} 
library (tidyverse) 
``` 

# Tab 1 

## Column 

### Section 1 

```{r echo=FALSE} 
# Data processing 

inputPanel (
    # inputs 
) 

renderPlot ({ 
    # Data processing 

    step = 0.05 
    max = step * ceiling(max(retention_rate$high)/step) 
    min = step * floor(min(retention_rate$low)/step) 

    ggplot (retention_rate, 
      aes (x = dsi, y = median, 
       ymin = low, ymax = high, 
       colour = ab_group, fill = ab_group)) + 
     theme (panel.background = element_rect (fill = 'white'), 
       panel.grid.major = element_line (colour = 'grey90', size = 0.20), 
       panel.grid.minor = element_line (colour = 'grey90', size = 0.10), 
       plot.title = element_text (lineheight = 1.15), 
       axis.title.y = element_text (angle = 0), 
       axis.title = element_text (size = 10), 
       text = element_text (size = 10), 
       legend.title = element_text (size = 10), 
       strip.text = element_text (size = 10, angle = 0), 
       plot.caption = element_text (hjust = 0.5, size = 9)) + 
     geom_vline (xintercept = c (1, 3, 7, 14, 28), 
        colour = 'gray80', linetype = 2, size = 0.4) + 
     geom_line() + 
     geom_ribbon (aes (colour = NULL), alpha = 0.2) + 
     scale_x_continuous (breaks = seq (0, max (retention_rate$dsi), 5)) + 
     scale_y_continuous (limits = c (min, max), 
          breaks = seq (min, max, step), 
          labels = sprintf ('%.0f %%', 100 * seq (min, max, step))) + 
     scale_colour_brewer (palette = 'Dark2') + 
     scale_fill_brewer (palette = 'Dark2') + 
     facet_grid (source~country) + 
     labs(x = '', 
      y = '', 
      colour = '', 
      fill = '', 
      title = '', 
      subtitle = '') 
}) 
``` 

### Days Active 

```{r echo=FALSE} 
# Data processing 

inputPanel (
    # inputs 
) 

renderPlot ({ 
    # Data processing 

    step = 0.5 
    max = step * ceiling(max(da$high)/step) 
    min = 0 

    ggplot (da, aes (x = '', y = median, 
        ymin = low, ymax = high, 
        colour = ab_group, fill = ab_group)) + 
     theme (panel.background = element_rect (fill = 'white'), 
       panel.grid.major = element_line (colour = 'grey90', size = 0.20), 
       panel.grid.minor = element_line (colour = 'grey90', size = 0.10), 
       plot.title = element_text (lineheight = 1.15), 
       axis.title.y = element_text (angle = 0), 
       axis.title = element_text (size = 10), 
       text = element_text (size = 10), 
       legend.title = element_text (size = 10), 
       strip.text = element_text (size = 10, angle = 0), 
       plot.caption = element_text (hjust = 0.5, size = 9)) + 
     geom_col (aes (colour = NULL), position = 'dodge', alpha = 0.60, width = 2/3) + 
     geom_errorbar (position = position_dodge (width = 2/3), width = 1/3) + 
     geom_text (position = position_dodge (width = 2/3), 
        aes (label = sprintf ('%.2f', median)), #hjust = - 1/(nrow (da) - 1), 
        vjust = -1) + 
     scale_y_continuous (limits = c (min, max), 
          breaks = seq (min, max, step)) + 
     scale_colour_brewer (palette = 'Dark2') + 
     scale_fill_brewer (palette = 'Dark2') + 
     facet_grid (source~country) + 
     labs (x = '', 
       y = '', 
       fill = '', colour = '', 
       title = '', 
       subtitle = '') 
}) 
``` 
+0

Что вы имеете в виду под "минимальной воспроизводимой примере"? Пример кода или? –

+0

Возможно, вы захотите посмотреть: http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example – HubertL

+1

Хорошо, я сделаю это и добавлю его в пост, как только у меня есть это, но должен ли я заключить из этого, что график, растягивающий это, не является общей проблемой, которая имеет известное решение? Я также довольно скептически отношусь к тому, что он имеет какое-либо отношение к данным, учитывая, что проблема возникает с разными наборами данных и даже с двумя разными типами сюжетов. Это похоже на то, что должно выводиться из самого кода. –

ответ

0

Я не могу воспроизвести ваш пример, потому что у меня нет retention_rate, поэтому я использовал данные mtcars, установка высоты renderPlot 1000 для имитации обрезку.

Я использовал miniContentPanel из библиотеки (miniUI) с прокрутки = TRUE в верхнем участке. Теперь у вас есть вертикальная полоса прокрутки, в отличие от нижнего участка.

enter image description here

--- 
title: "title" 
author: "author" 
date: "date" 
output: 
    flexdashboard::flex_dashboard: 
    orientation: columns 
vertical_layout: scroll 
logo: "" 
favicon: "" 
source_code: embed 
runtime: shiny 
--- 

```{r, setup, include=FALSE} 
library (tidyverse) 
library(miniUI) 

``` 

# Tab 1 

## Column 

### Section 1 

```{r, echo=FALSE} 
# Data processing 

inputPanel (
    # inputs 
) 

## Upper plot with miniContentPanel and scrollable = TRUE 
miniContentPanel(
    renderPlot ({ 
    ggplot(mtcars,aes(x=mpg,y=cyl))+ 
     geom_point() 
    },height=1000), 
    scrollable = TRUE) 

``` 

### Days Active 

```{r, echo=FALSE} 
# Data processing 

inputPanel (
    # inputs 
) 

## lower plot without miniContentPanel ---- 
renderPlot({ 
    ggplot(mtcars,aes(x=gear,y=wt))+ 
    geom_point()}, 
height=1000) 

```