当侧边栏太长时,该怎么办?

时间:2015-12-14 23:55:30

标签: r shiny

在下面的玩具示例中,我在侧边栏中有很多滑块。对于最后一些,我再也看不到右边的情节了。有没有解决这个问题的方法,不涉及删除滑块?

# 01-kmeans-app

palette(c("#E41A1C", "#377EB8", "#4DAF4A", "#984EA3",
  "#FF7F00", "#FFFF33", "#A65628", "#F781BF", "#999999"))

library(shiny)

ui <- fluidPage(
  headerPanel('Iris k-means clustering'),
  sidebarPanel(
    selectInput('xcol', 'X Variable', names(iris)),
    selectInput('xcol', 'X Variable', names(iris)),
    selectInput('xcol', 'X Variable', names(iris)),
    selectInput('xcol', 'X Variable', names(iris)),
    selectInput('xcol', 'X Variable', names(iris)),
    selectInput('xcol', 'X Variable', names(iris)),
    selectInput('xcol', 'X Variable', names(iris)),
    selectInput('xcol', 'X Variable', names(iris)),
    selectInput('xcol', 'X Variable', names(iris)),
    selectInput('xcol', 'X Variable', names(iris)),
    selectInput('ycol', 'Y Variable', names(iris),
      selected = names(iris)[[2]]),
    numericInput('clusters', 'Cluster count', 3,
      min = 1, max = 9)
  ),
  mainPanel(
    plotOutput('plot1')
  )
)

server <- function(input, output) {

  selectedData <- reactive({
    iris[, c(input$xcol, input$ycol)]
  })

  clusters <- reactive({
    kmeans(selectedData(), input$clusters)
  })

  output$plot1 <- renderPlot({
    par(mar = c(5.1, 4.1, 0, 1))
    plot(selectedData(),
         col = clusters()$cluster,
         pch = 20, cex = 3)
    points(clusters()$centers, pch = 4, cex = 4, lwd = 4)
  })

}

shinyApp(ui = ui, server = server)

1 个答案:

答案 0 :(得分:4)

您可以尝试向侧边栏添加向下滚动条

感谢R shiny scroll wellPanel

# 01-kmeans-app

palette(c("#E41A1C", "#377EB8", "#4DAF4A", "#984EA3",
          "#FF7F00", "#FFFF33", "#A65628", "#F781BF", "#999999"))

library(shiny)

ui <- fluidPage(
    headerPanel('Iris k-means clustering'),
    sidebarPanel(id = "tPanel",style = "overflow-y:scroll; max-height: 600px; position:relative;",
        selectInput('xcol', 'X Variable', names(iris)),
        selectInput('xcol', 'X Variable', names(iris)),
        selectInput('xcol', 'X Variable', names(iris)),
        selectInput('xcol', 'X Variable', names(iris)),
        selectInput('xcol', 'X Variable', names(iris)),
        selectInput('xcol', 'X Variable', names(iris)),
        selectInput('xcol', 'X Variable', names(iris)),
        selectInput('xcol', 'X Variable', names(iris)),
        selectInput('xcol', 'X Variable', names(iris)),
        selectInput('xcol', 'X Variable', names(iris)),
        selectInput('ycol', 'Y Variable', names(iris),
                    selected = names(iris)[[2]]),
        numericInput('clusters', 'Cluster count', 3,
                     min = 1, max = 9)
    ),
    mainPanel(
        plotOutput('plot1')
    )
)

server <- function(input, output) {

    selectedData <- reactive({
        iris[, c(input$xcol, input$ycol)]
    })

    clusters <- reactive({
        kmeans(selectedData(), input$clusters)
    })

    output$plot1 <- renderPlot({
        par(mar = c(5.1, 4.1, 0, 1))
        plot(selectedData(),
             col = clusters()$cluster,
             pch = 20, cex = 3)
        points(clusters()$centers, pch = 4, cex = 4, lwd = 4)
    })

}

shinyApp(ui = ui, server = server)