publicar - Escalado de parcelas brillantes a altura de ventana.
shiny r tutorial (1)
Quiero escalar una trama brillante a la altura de la ventana. Esta pregunta de SO relacionada solo usa especificaciones de altura absoluta en píxeles, cuando una height = 100%
sería preferible. Observo en la documentación que absolutePanel
puede lograr esto con sus argumentos top, bottom, left, right
, pero luego pierde el panel lateral y, en cualquier caso, la trama (mientras se escala al ancho) parece ignorar la altura disponible.
Supongo que esto se relaciona con la peculiaridad del html que significa que necesitas obtener la altura con la variable innerHeight
javascript. Pero no estoy claro cómo implementar una solución brillante para obtener ui.R
para utilizar esto. Agradecido por cualquier punteros.
Un modelo de aplicación básico para el desarrollo:
ui.R
library(shiny)
shinyServer(
function(input, output) {
output$myplot <- renderPlot({
hist(rnorm(1000))
})
}
)
servidor.R
library(shiny)
pageWithSidebar(
headerPanel("window height check"),
sidebarPanel(),
mainPanel(
plotOutput("myplot")
)
)
Utilice CSS3. Declare su altura en unidades de viewport http://caniuse.com/#feat=viewport-units . Debería poder declararlos utilizando el argumento de height
en plotOutput
sin embargo shiny::validateCssUnit
no los reconoce, por lo que puede declararlos en un encabezado de estilo:
library(shiny)
runApp(
list(server= function(input, output) {
output$myplot <- renderPlot({
hist(rnorm(1000))
})
}
, ui = pageWithSidebar(
headerPanel("window height check"),
sidebarPanel(
tags$head(tags$style("#myplot{height:100vh !important;}"))
),
mainPanel(
plotOutput("myplot")
)
)
)
)
Esto no funciona en el navegador brillante pero debería funcionar correctamente en un navegador principal.