One main panel and 2 side panels

webbeing picture webbeing · Jun 12, 2016 · Viewed 8.1k times · Source

Using Shiny, does anyone happen to know how to create a UI with one main panel (middle) and two side panels (left and right) with each one has their own horizontal and vertical scroll bar?

Answer

Xiongbing Jin picture Xiongbing Jin · Jun 13, 2016

You can use fluidRow and column. Here is an example. You can adjust the column width, as long as the total adds to 12.

library(shiny)

ui <- shinyUI(fluidPage(

   titlePanel("Old Faithful Geyser Data"),

   fluidRow(
     column(2,
            sliderInput("bins",
                        "Number of bins:",
                        min = 1,
                        max = 50,
                        value = 30),
            style="overflow-x: scroll; overflow-y: scroll"),
     column(8,
            plotOutput("distPlot")),
     column(2,
            textInput("test", "Test"),
            style="overflow-x: scroll; overflow-y: scroll")
   )
))

server <- shinyServer(function(input, output) {

   output$distPlot <- renderPlot({
      x    <- faithful[, 2] 
      bins <- seq(min(x), max(x), length.out = input$bins + 1)

      hist(x, breaks = bins, col = 'darkgray', border = 'white')
   })
})

shinyApp(ui = ui, server = server)