Как отобразить несколько графиков на странице FlexDashboard R при использовании макета раскадровки

Я строю R FlexDashboard в формате раскадровки. Я хотел бы отобразить несколько графиков на нескольких страницах раскадровки, включая серию связанных графиков с использованием перекрестных помех. Однако, когда я пытаюсь отобразить несколько графиков на странице или использую функцию bscols(), страница выглядит испорченной. Разрешены ли несколько сюжетов в формате раскадровки R FlexDashboard? Вот пример:

---
title: "Error_example"
output: 
  flexdashboard::flex_dashboard:
    storyboard: true
    theme: bootstrap
---

###Example: Why can't won't the datatable show up below the plot in this storyboard?

```{r}
library(plotly)
library(DT)

plot1<-plot_ly(data=diamonds,x=~carat,y=~price)
table1<-datatable(diamonds)

plot1
table1

2 ответа

bsCols() Кажется, полностью переопределить CSS flexdashboard, поэтому я бы избегал его использования.

Простым решением было бы добавить несколько div в R порцию. Что-то вроде:

---
title: "I think this should work"
output: 
  flexdashboard::flex_dashboard:
    storyboard: true
    theme: bootstrap
---

###Example: Using divs to separate outputs

```{r}
library(shiny)
library(plotly)
library(DT)

plot1<-plot_ly(data=diamonds,x=~carat,y=~price)
table1<-datatable(diamonds)

 tags$div(
   tags$div(
    plot1
  ),
  tags$div(
    table1
  )
 )
```

Этот пример объединяет перекрестные помехи, листовки и графики таким образом, чтобы обеспечить большое количество графиков. Хитрость заключается в том, чтобы использовать абсолютные панели со складными кнопками. Абсолютная панель находится над картой листовки, что означает, что карта может быть в полном размере, как в superzip https://shiny.rstudio.com/gallery/superzip-example.html, тогда как кнопки позволяют отображать графики по мере необходимости. Таким образом, вы можете добавить столько графиков и таблиц, сколько захотите, связать их перекрестными помехами и все же рассказать свою историю.

введите описание изображения здесь

введите описание изображения здесь

Это делает чистый интерфейс, где графики включены таким образом, что пользователь имеет больший контроль над окончательным отображением. Другой пример здесь Как объединить расположение строк и столбцов в flexdashboard?, но без перекрестных помех.

    ---
    title: "Demo"
    output:
      flexdashboard::flex_dashboard:
        orientation: columns
        vertical_layout: fill
    ---


    ```{r setup, include=FALSE}
    library(flexdashboard)
    library(rmarkdown)
    library(plotly)
    library(shiny)
    library(DT)

    ```


    ```{r}
    library(crosstalk)
    sd <- SharedData$new(quakes[sample(nrow(quakes), 100),])

    ```


    Map { data-icon="fa-map-o"}
    =====================================  
    Sidebar {.sidebar data-width=220}
    --------------------------------

    ```{r, results='asis'}

     filter_slider("mag", "Magnitude", sd, column=~mag, step=0.1, width=200)

    ```

    Column {data-width=400}
    --------------------------------


    ### Planet Earth

    ```{r}

    library(leaflet)
     leaflet(sd) %>% addTiles() %>% addMarkers()

    ```



    ```{r}
    ##########################
    absolutePanel(id = "controls", class = "panel panel-default", fixed = TRUE,
                  draggable = TRUE, top = 70, left = "auto", right = 20, bottom = "auto",
                  width = '25%', height = 'auto', 
                  style = "overflow-y:scroll; max-height: 1000px; opacity: 0.9; style = z-index: 400",

                h4(strong("Plot Explorer")),

        HTML('<button data-toggle="collapse" data-target="#box1" class="btn-block btn-primary">dot plot</button>'),
        tags$div(id = 'box1', class="collapse in",

         plot_ly(sd, x = ~depth, y = ~mag) %>% layout(height=200)

                ),

     HTML('<button data-toggle="collapse" data-target="#box2" class="btn-block btn-warning">histogram</button>'),
        tags$div(id = 'box2', class="collapse",

           plot_ly(sd, x = ~depth, y = ~mag, type = "histogram", name = "Histogram") %>% layout(height=200)
        ),

      HTML('<button data-toggle="collapse" data-target="#box3" class="btn-block btn-danger">table</button>'),
        tags$div(id = 'box3', class="collapse in",

     datatable(sd, extensions="Scroller", style="bootstrap", class="compact", width="100%",height = 300,
        options=list(deferRender=TRUE, scrollY=300, scroller=TRUE))
       )

      )

    ```
Другие вопросы по тегам