Un approccio alternativo può essere quello di utilizzare absolutepanels dal lucido. Invece di cercare di trovare una disposizione a griglia per adattare tutti i pezzi sullo schermo, usa un absolutepanel con pulsanti pieghevoli per scegliere in modo selettivo quali caselle compaiono in un dato momento. Ciò consente all'utente di scegliere i grafici e le informazioni che desidera presentare. L'idea si è evoluta dall'app superzip https://shiny.rstudio.com/gallery/superzip-example.html, ma funziona bene in flexdashboard.
Nell'esempio seguente, è possibile visualizzare i grafici in modo che vengano visualizzati o nascosti al caricamento della pagina.Fai clic sui pulsanti per farli apparire o andare via. Questo è stato molto utile quando si mescolava il foglio con le trame, per evitare di annegare la mappa con trame (dove come prima i grafici erano limitati a causa di problemi di annegamento).
---
title: "Demo"
output:
flexdashboard::flex_dashboard:
orientation: columns
vertical_layout: fill
---
```{r setup, include=FALSE}
library(flexdashboard)
library(rmarkdown)
library(plotly)
library(shiny)
```
Column {data-width=400}
--------------------------------
### Planet Earth
```{r}
library(leaflet)
m = leaflet() %>% addTiles()
m # a map with the default OSM tile layer
```
```{r}
#plot setup
mtcars$am[which(mtcars$am == 0)] <- 'Automatic'
mtcars$am[which(mtcars$am == 1)] <- 'Manual'
mtcars$am <- as.factor(mtcars$am)
p <- plot_ly(mtcars, x = ~wt, y = ~hp, z = ~qsec, color = ~am, colors = c('#BF382A', '#0C4B8E')) %>%
add_markers() %>%
layout(scene = list(xaxis = list(title = 'Weight'),
yaxis = list(title = 'Gross horsepower'),
zaxis = list(title = '1/4 mile time')))
set.seed(100)
d <- diamonds[sample(nrow(diamonds), 1000), ]
##########################
absolutePanel(id = "controls", class = "panel panel-default", fixed = TRUE,
draggable = TRUE, top = 70, left = "auto", right = 20, bottom = "auto",
width = '30%', 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(d, x = ~carat, y = ~price, color = ~carat,
size = ~carat, text = ~paste("Clarity: ", clarity)) %>% 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(x = rnorm(500), type = "histogram", name = "Histogram") %>% layout(height=200)
),
HTML('<button data-toggle="collapse" data-target="#box3" class="btn-block btn-danger">spinny thing</button>'),
tags$div(id = 'box3', class="collapse in",
p %>% layout(height=200)
)
)
```
Un modo per mantenere i controlli layout della barra laterale e hanno il layout che hai fornito? –
@TylerRinker Significa che vuoi mettere i controlli lucidi nella barra laterale che assomiglia a un pannello, o vuoi aggiungere una seconda barra laterale (che assomiglia più a una barra laterale) a questo layout? – dww
Più tardi ... qualcosa di simile: http://i.imgur.com/VqYbwwC.png –