You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为noUiSlider的刻度标签设置SI符号格式?

实现noUiSlider刻度标签的SI缩写格式化

要将noUiSlider的刻度标签转换为带SI符号的缩写形式(如1000→1K、900000→900K、5000000→5M),需要自定义JavaScript格式化函数替换默认数字显示逻辑。以下是修改后的完整代码:

library(shiny)
library(shinyWidgets)
library(htmlwidgets)

ui <- fluidPage(
  
  tags$br(),
  
  noUiSliderInput(
    inputId = "noui", 
    label = "垂直滑块:",
    value =  50,
    orientation = "vertical",
    range = list("min" = list(0),
                 "25%" = list(1000, 500),
                 "50%" = list(10000, 50000),
                 "75%" = list(4000000, 500000),
                 "max" = list(10000000)),
    pips = list(
      mode = "values",
      values = list(0, 500, 1000, 900000, 5000000, 10000000),
      density = 4,
      format = JS("function(value) {
        if (value >= 1000000) {
          return (value / 1000000) + 'M';
        } else if (value >= 1000) {
          return (value / 1000) + 'K';
        } else {
          return value.toString();
        }
      }")
    ),
    format = JS("function(value) {
      if (value >= 1000000) {
        return (value / 1000000) + 'M';
      } else if (value >= 1000) {
        return (value / 1000) + 'K';
      } else {
        return value.toString();
      }
    }"),
    width = "300px", height = "300px"
  ),
  verbatimTextOutput(outputId = "res")
  
)

server <- function(input, output, session) {
  
  output$res <- renderPrint(input$noui)
  
}

shinyApp(ui, server)

关键说明:

  • 用htmlwidgets::JS()定义格式化函数,按数字量级自动转换:
    • ≥100万的数字除以1000000后加M后缀
    • ≥1000的数字除以1000后加K后缀
    • 小于1000的数字直接显示原数值
  • 同时在pips参数中指定相同格式化函数,保证刻度标签和滑块当前值的显示格式统一

内容的提问来源于stack exchange,提问作者Stéphane Laurent

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 06:05:19