一个滑块上有多个范围输入

问题描述 投票:0回答:2

我知道如何创建值的

sliderInput
和范围
sliderInput

# ui
shinyUI(fluidPage(
  fluidRow(
    column(4,

      # Copy the line below to make a slider bar 
      sliderInput("slider1", label = h3("Slider"), min = 0, 
        max = 100, value = 50)
    ),
    column(4,

      # Copy the line below to make a slider range 
      sliderInput("slider2", label = h3("Slider Range"), min = 0, 
        max = 100, value = c(40, 60))
    )
  ),

  hr(),

  fluidRow(
    column(4, verbatimTextOutput("value")),
    column(4, verbatimTextOutput("range"))
  )

)) 

但是,我想要一个在一个滑块上具有多个范围的

sliderInput
。这是一种在一个滑块上独立选择三个或更多值的能力。我最初设置
value = c(40, 60, 80)
的想法没有奏效:
80
被忽略了。我知道此功能可能无法实现。

r slider shiny
2个回答
2
投票

目前闪亮的 sliderInput 正在闪亮的 jQuery Ion.RangeSlider 中实现(http://ionden.com/a/plugins/ion.rangeSlider/en.html),正如您可以从 sliderInput 函数定义中看到的(https: //github.com/rstudio/shiny/blob/master/R/input-slider.R)。

通过构造 Ion.RangeSlider 最多有两个手柄(默认范围选择)。

已要求实现任意数量的句柄,由其负责开发该插件(IonDen)。不幸的是他拒绝了这个请求。

唯一的出路似乎是基于其他 jquery 滑块构建自己的 htmlwidget。


0
投票

作为替代方案,可以通过 shinyWidgets::noUiSliderInput()

完成
library(shiny)
library(shinyWidgets)

ui <- fluidPage(
  noUiSliderInput(
    inputId = "myNoUiSlider",
    label = "Select:",
    min = 0, 
    max = 100,
    value = c(40, 60, 80),
    tooltips = TRUE,
    step = 1,
    color = "#0000FF"
  ),
  textOutput("selection")
)

server <- function(input, output, session) {
  output$selection <- renderText({paste("Selected:", paste(input$myNoUiSlider, collapse  = ", "))})
}

shinyApp(ui, server)

result

(基于noUiSlider,它还允许滑块有多种颜色

© www.soinside.com 2019 - 2024. All rights reserved.