fbreitwieser
4/20/2016 - 6:25 PM

Example demonstrating dynamic resizing of d3heatmap using renderUI inside shinydashboard

Example demonstrating dynamic resizing of d3heatmap using renderUI inside shinydashboard

library(shiny)
library(d3heatmap)
library(shinydashboard)

ui <- dashboardPage(
  dashboardHeader(title="resizing d3heatmap"),
  dashboardSidebar(
    sliderInput("obs", "Number of rows:", min = 10, max = 100, value = 50)
  ),
  dashboardBody(
    tabBox(
      tabPanel("Heatmap",uiOutput("hm_o")),
      tabPanel("Data",verbatimTextOutput("dat_print"))
    )
  )
)

server <- function(input, output) {
  dat <- reactive({ matrix(rnorm(input$obs*4),ncol=4) })

  output$dat_print <- renderPrint({ dat() })

  output$hm_o <- renderUI({
    d3heatmap::d3heatmapOutput('hm',width="50%", height=paste0(50+input$obs*10,"px"))
  })

  output$hm <- renderD3heatmap({
    d3heatmap(dat(), Colv=FALSE,
              colors=colorRampPalette(c("blue", "white", "red"))(100))
  })
}

shinyApp(ui = ui, server = server)