用户定义的inputSlider中的tickmark标签有光泽

时间:2016-10-25 19:57:30

标签: r shiny

sliderInput("myslider", "Slider:", min=1, max=100, value=6)

返回带有标记标签的滑块,分别为1,11,21,31,...,91和100。

我希望确定这些tickmark标签的启发式方法能够返回更合理的1,10,20,30,...... 90,100的值。

我想这会出现很多,因为从1到100的滑块是非常常见的。 (如果设置min = 0,它确实会显示所需的tickmark标签,但在许多应用中,您不希望输入为0。

目前,无法为sliderInput提供用户定义的tickmark标签。是否有针对标签的解决方法?

类似的问题已发布here,但它讨论的是创建用户定义的刻度线,而不是标签。

1 个答案:

答案 0 :(得分:0)

https://groups.google.com/forum/#!topic/shiny-discuss/AeAzR4p2h1g中是此问题的解决方案:

ui <- pageWithSidebar(
  headerPanel("Slider labels"),
  sidebarPanel(
    uiOutput("slider")
  ),
  mainPanel()
)

server <- function(input, output) {
  output$slider <- renderUI({

      args       <- list(inputId="foo", label="slider :", ticks=c(90,95,99,99.9), value=c(2,3))

      args$min   <- 1
      args$max   <- length(args$ticks)

      if (sessionInfo()$otherPkgs$shiny$Version>="0.11") {
        # this part works with shiny 1.5.0
        ticks <- paste0(args$ticks, collapse=',')
        args$ticks <- T
        html  <- do.call('sliderInput', args)

        html$children[[2]]$attribs[['data-values']] <- ticks;

      } else {
        html  <- do.call('sliderInput', args)    
      }

      html
    })

}

runApp(list(ui = ui, server = server))