2017-01-17 2 views
0

Je veux montrer quelques graphiques différents sur mon application Shiny, en les séparant dans des sections peu nommées (en utilisant le ### de Markdown). Cependant, les parcelles que j'imprime à l'intérieur de ces sections ont leurs fonds coupés. Non seulement cela, mais quand je change leur attribut data-height, ils s'étendent juste pour garantir qu'ils seront encore coupés.Le tracé de ggplot2 s'étire dans flexdashboard et coupe le fond

enter image description here

enter image description here

je pourrais être en mesure de définir une valeur de hauteur de données qui est assez grand qu'il ne coupera pas l'image du tout, mais alors il sera extrêmement déformée. Comment puis-je conserver la même taille de l'intrigue tout en redimensionnant la section dans laquelle il se trouve? Ou encore mieux, est-il possible de faire en sorte que la taille de la section s'adapte automatiquement à la taille de la parcelle?

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

Que voulez-vous dire par "exemple reproductible minimal"? Un échantillon de code ou? –

+0

Vous pouvez jeter un oeil à: http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example – HubertL

+1

Bon, je vais le faire et l'ajouter à la poster dès que je l'ai, mais dois-je en conclure que le graphique qui s'étend comme ça n'est pas un problème commun qui a une solution connue? Je suis également assez sceptique sur le fait que cela a quelque chose à voir avec les données, étant donné que le problème se produit avec différents ensembles de données et même deux types de tracés différents. Cela semble être quelque chose qui devrait être déductible du code lui-même. –

Répondre

0

Je suis incapable de reproduire votre exemple parce que je n'ai pas retention_rate, donc j'utilisé les données de mtcars, réglage de la hauteur de renderPlot à 1000 pour simuler la culture.

I utilisé miniContentPanel bibliothèque (miniUI) avec défilante = TRUE dans le tracé supérieur. Vous avez maintenant une barre de défilement verticale différente de celle de l'intrigue inférieure.

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) 

```