shiny fluidrow column white space

2019-02-06 07:28发布

问题:

I have a top banner that I want to split into two separate sections representing two different inputs. To do this, I've created a fluidRow and with two columns, one for each input. However, as it is now there is a little bit of white space between the columns, despite putting offset = 0. Is there any way to remove this white space so that the columns are immediately next to one another?

colors = c("green","blue","red")
library(shiny)

ui <- fluidPage(

  tabsetPanel(
    tabPanel("Info",
             fluidRow( 
                   column(width = 6, offset = 0,
                      div(style = "height:50px;width:100%;background-color: #999999;border-style: solid;border-color: #000000",
                          tags$h3("Section 1")
                      )
                   ),
                   column(width = 6, offset = 0,
                       div(style = "height:50px;width:100%;background-color: #999999;border-style: solid;border-color: #000000",       
                          tags$h3("Section 2")
                       )
                   ) 
             ),
             fluidRow(
                   column(width = 6, offset = 0,
                   div(style = "height:50px;width:100%;background-color: #999999;border-style: solid;border-color: #000000",       
                       selectInput(inputId = "color",label = "color:",
                                   choices = colors,
                                   selected = colors[2],
                                   multiple = FALSE)
                      )
                    ),
                   column(width = 6, offset = 0,
                          div(style = "height:50px;width:100%;background-color: #999999;border-style: solid;border-color: #000000",       
                              selectInput(inputId = "points",label = "Number of Points:",
                                          choices = c("30","60","90"),
                                          selected = "10",
                                          multiple = FALSE)                      )
                   )
             ),   
             br(),
             br(),
             fluidRow(
                   actionButton(inputId = "go",
                                label = "Update"
                   )
             ),
             fluidRow(
                   plotOutput("plot", width = "100%")
             )

    )
  )
)


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

  data = eventReactive(input$go, {
    var1 = rnorm(isolate(as.numeric(input$points)),5)
    cat1 = c(rep("red",length(var1)/3),rep("blue",length(var1)/3),rep("green",length(var1)/3))
    data = cbind.data.frame(var1,cat1)
    plotdata = data[which(data$cat1 ==isolate(input$color)),] 
  }
  )

  output$plot = renderPlot({
    plotdata = data()
    plotcol = isolate(input$color)
    plot(plotdata$var1, col = plotcol) 
  })
}

shinyApp(ui = ui,server = server)

回答1:

The white space is the padding of the column div. To remove that, use

column(width = 6, offset = 0, style='padding:0px;', ...)