2017-01-17 8 views
0

私のShinyアプリケーションでは、マークダウンの###を使用して小さな名前のセクションでいくつかの異なるプロットを表示したいと考えています。しかし、私がこれらのセクションの中に印刷しているプロットは、ボトムスカットされています。それだけでなく、私が彼らのdata-height属性を変更するとき、彼らはまだ彼らがまだ切断されることを保証するために伸びます。ggplot2プロットはフレックスダッシュボードで伸びて底を切ります

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

さて、私はそれを行い、私はそれをすぐに投稿しますが、私はこのように伸びるグラフは、既知の解決策を持つ一般的な問題ではないという結論からすればいいでしょうか?私は、問題が異なるデータセットや2つの異なるプロットタイプであっても、データとは何か関係があるとかなり懐疑的です。それはコード自体から推測できるもののようです。 –

答えて

0

私はretention_rateを持っていないので、あなたの例を再現することができませんので、私はトリミングをシミュレートするために、1000年にrenderPlotの高さを設定し、mtcarsデータを使用。

Iは、上部のプロットで =スクロールTRUE とライブラリ(miniUI)からminiContentPanelを用います。今度は下のプロットとは違って垂直スクロールバーがあります。

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) 

``` 
関連する問題