如何使用 SI 符号格式化 noUiSlider 的刻度标签?

2024-01-10

这是我的 noUiSlider 的样子:

我想将刻度标签格式设置为:1000 -> 1K、900000 -> 900K、5000000 -> 5M 等;即用适当的 SI 符号缩写数字。

library(shiny)
library(shinyWidgets)

ui <- fluidPage(
  
  tags$br(),
  
  noUiSliderInput(
    inputId = "noui", 
    label = "Slider vertical:",
    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 = wNumbFormat(decimals = 0),
    width = "300px", height = "300px"
  ),
  verbatimTextOutput(outputId = "res")
  
)

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

shinyApp(ui, server)

我们需要设置pipsJavaScript 选项,能够将函数传递给format子选项:

library(shiny)
library(shinyWidgets)
library(shinyjs)

abbreviateNumber <- '
const SI_SYMBOLS = ["", "k", "M", "G", "T", "P", "E"];

const abbreviateNumber = (number, minDigits, maxDigits) => {
    if (number === 0) return number;

    // determines SI symbol
    const tier = Math.floor(Math.log10(Math.abs(number)) / 3);

    // get suffix and determine scale
    const suffix = SI_SYMBOLS[tier];
    const scale = 10 ** (tier * 3);

    // scale the number
    const scaled = number / scale;

    // format number and add suffix
    return scaled.toLocaleString(undefined, {
        minimumFractionDigits: minDigits,
        maximumFractionDigits: maxDigits,
    }) + suffix;
};' # https://stackoverflow.com/a/65324090/1100107

js <- paste(
  "var slider = document.getElementById('noui').noUiSlider;",
  "slider.pips({",
  "  mode: 'values',",
  "  values: [0, 500, 1000, 900000, 5000000, 10000000],",
  "  density: 4,", 
  "  format: {", 
  "    to: function(x) {return abbreviateNumber(x);}",
  "  }",
  "});",
  sep = "\n"
)


ui <- fluidPage(
  
  useShinyjs(),
  
  tags$head(
    tags$script(HTML(abbreviateNumber))
  ),
  
  tags$br(),
  
  noUiSliderInput(
    inputId = "noui", 
    label = "Slider vertical:",
    value =  50,
    orientation = "vertical",
    range = list("min" = list(0),
                 "25%" = list(1000, 500),
                 "50%" = list(10000, 50000),
                 "75%" = list(4000000, 500000),
                 "max" = list(10000000)),
    format = wNumbFormat(decimals = 0),
    width = "300px", height = "300px"
  ),
  
  verbatimTextOutput(outputId = "res")
  
)

server <- function(input, output, session) {
  
  observeEvent(input$noui, {
    runjs(js)
  }, once = TRUE)
  
  output$res <- renderPrint(input$noui)
  
}

shinyApp(ui, server)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 SI 符号格式化 noUiSlider 的刻度标签? 的相关文章

  • 使用 useReducers 调度函数发送多个操作?

    使用时是否可以通过调度函数发送多个动作useReducer挂钩反应 我尝试向它传递一组操作 但这会引发未处理的运行时异常 明确地说 通常会有一个初始状态对象和一个减速器 如下所示 const initialState message1 nu
  • 使用 jQuery/JS 打开时使
    标签的内容具有动画效果

    我只想要 HTML5 的内容details标记为 滑行 动画打开 而不是仅仅弹出打开 立即出现 这可以用 jQuery Javascript 实现吗 Fiddle http jsfiddle net 9h4Hq HTML
  • Google App Engine:修改云运行环境

    我正在尝试部署一个使用自定义 Node js 服务器的 Next js 应用程序 我想将自定义构建变量注入应用程序 next config js const NODE ENV process env NODE ENV const envTy
  • 如何监听 jQuery AJAX 请求?

    以下两种实现 ajaxRequest 1 2 的方法应该是等效的 话说回来 为什么验证回调已执行的单元测试 3 在 1 中成功而在 2 中失败 我应该如何重写测试 3 来监视 2 中的成功回调 如果我尝试stub jQuery ajax使用
  • 从未用 @flow 标记的导入文件中获取类型定义

    TL DR我怎么告诉flow从未声明的导入模块导入类型定义 flow 加长版 流接缝能够从不使用流语法的文件中派生类型 请参阅示例 示例文件 flow js if Math random lt 0 5 var y hello else va
  • JavaScript 重定向到新窗口

    我有以下代码 它根据下拉列表的值重定向到页面 我如何使其在新窗口中打开 function goto form var index form select selectedIndex if form select options index
  • 为什么 geom_boxplot 比基本箱线图识别更多异常值?

    这是一个可重复的示例 与基本箱线图相比 最后一个治疗组又发现了一个异常值 dta lt structure list Treatment c A A A A A A A A A A A A A A A A B B B B B B B B B
  • 16 位以上整数的计算

    我有两个大整数 两者都超过 16 位 确切地说是 20 位 而且我知道由于双精度浮点运算 我在使用这些数字进行计算甚至将它们存储在变量中 独立于编程语言 时受到限制 不过 我想也许gmp图书馆应该处理它们 但不幸的是它没有 可以计算更大的整
  • Firefox 书签探索未超过 Javascript 的第一级

    我已经编写了一些代码来探索我的 Firefox 书签 但我只获得了第一级书签 即我没有获得文件夹中的链接 e g 搜索引擎 雅虎网站 谷歌网站 在此示例中 我只能访问 Search engines 和 google com 不能访问 yah
  • Angular 2+ 安全性;保护服务器上的延迟加载模块

    我有一个 Angular 2 应用程序 用户可以在其中输入个人数据 该数据在应用程序的另一部分进行分析 该部分仅适用于具有特定权限的人员 问题是我们不想让未经授权的人知道how我们正在分析这些数据 因此 如果他们能够在应用程序中查看模板 那
  • 使用predictNLS围绕R中的拟合值创建置信区间?

    我想使用 R 中 propogate 包中的 PredictNLS 围绕一大组拟合值构建置信区间 作为示例 我将使用它们在函数描述中引用的数据集 https rdrr io github anspiess propagate man pre
  • 具有 dplyr、tidyverse 和 broom 的相关矩阵 - P 值矩阵

    全部 我想使用以下方法从相关矩阵中获取 p 值dplyr 和 或扫帚包 并同时测试多个变量 我知道其他方法 但 dplyr 对我来说似乎更简单 更直观 此外 dplyr 需要关联每个变量以获得特定的 p 值 这使得该过程更容易 更快 我检查
  • FireFox 中的自动滚动

    我的应用程序是实时聊天 我有一个 Div 来包装消息 每条消息都是一个 div 所以 在几条消息之后 我的 DOM 看起来像这样 div div Message number two div div div div
  • 如何在类似控制台的环境中运行 JavaScript?

    我正在尝试遵循这里的示例 http eloquentjavascript net chapter2 html http eloquentjavascript net chapter2 html and print blah 在浏览器中运行时
  • 有没有办法阻止 prettier / prettier-now 将函数参数分解为新行

    当使用 prettier prettier now 在保存时进行格式化时 当一个函数包装另一个函数时 它会中断到一个新行 我想知道是否有办法阻止这种行为 例如 期望的输出 app get campgrounds id catchAsync
  • Safari 支持 JavaScript window.onerror 吗?

    我有一个附加到 window onerror 的函数 window onerror function errorMsg url line window alert asdf 这在 firefox chrome 和 IE 中工作正常 但在 s
  • 如何仅在最后一个
  • 处给出透明六边形角度?
  • 我必须制作这样的菜单 替代文本 http shup com Shup 330421 1104422739 My Desktop png http shup com Shup 330421 1104422739 My Desktop png
  • 将 MQTTNet 服务器与 MQTT.js 客户端结合使用

    我已经启动了一个 MQTT 服务器 就像this https github com chkr1011 MQTTnet tree master例子 该代码托管在 ASP Net Core 2 0 应用程序中 但我尝试过控制台应用程序 但没有成
  • 使用 Ajax 请求作为源数据的 Jquery 自动完成搜索

    我想做的事 我想使用 jquery 自动完成函数创建一个输入文本字段 该函数从跨域curl 请求获取源数据 结果应该与此示例完全相同 CSS 在这里并不重要 http abload de img jquerydblf5 png http a
  • 非闪亮上下文中的反应式对象绑定

    实际问题 你怎样才能近似反应性环境 行为 http shiny rstudio com tutorial lesson6 建立者shiny http shiny rstudio com函数 或者甚至可能在一个函数中使用这些函数无光泽上下文以

随机推荐

  • WPF 中心子窗口无法使用 sizetocontent

    如果我设置SizeToContent to WidthAndHeight then WindowStartupLocation CenterOwner 不能正常工作 新窗口的中心不是位于其父窗口的中心 而是看起来更像是子窗口的左上角位于父窗
  • 解决 Unity 依赖关系问题

    当我尝试解决我的工作单元时 我收到此错误 IUnitOfWork 类型没有可访问的构造函数 但是 只有当我将 unitOfWork 的 LifetimeManager 设置为 PerResolveLifetimeManager 时 才会发生
  • 如何从 Windows 命令行启动 Git Bash?

    我希望这是一个简单的问题 但我还没有找到答案 我想从 Windows 批处理文件启动 Git Bash 这是我到目前为止所尝试的 从 Windows 7 开始按钮启动 Git Bash 使用 CTRL ALT DEL 将进程识别为 sh e
  • 我如何改进这个 C# 随机方法?

    我想我已经决定将其作为随机列表的最简单且可进行单元测试的方法 但有兴趣听到任何改进 public static IList
  • 我的 Android AChartEngine 已经可以工作了,但是如何让它看起来更好呢?

    我想标题已经解答了我的大部分问题 但让我们详细介绍一下背景 我有一个主要针对平板电脑的 Android 应用程序 它将在 TimeCharts 中显示一些不同的实时数据 因此 我已经有一个与数据源通信的服务 该数据源获取数据 解析数据并将值
  • 这里有人使用Linux主机/VMWare/VirtualKD调试环境吗?

    有没有人有过成功的经验虚拟KD http virtualkd sysprogs org在运行 VMWare Workstation 8 带有 Win7 客户机 的 Linux 主机上进行设置 尽管事实上有很多关于 VirtualKD 的 速
  • 选择/插入/更新表字段数据时修剪空格(前导和尾随)是一个好习惯吗?

    假设空格在字段数据中并不重要 那么在插入 更新或从表中选择数据时修剪空格是一个好习惯吗 我想象不同的数据库以不同的方式实现空格处理 因此为了避免这种头痛 我认为我应该禁止任何字段数据中的前导和尾随空格 你怎么认为 我认为这是一个很好的做法
  • Android 中 EditText 的不同颜色

    我正在尝试使 EditText 的文本具有多种颜色 例如 如果我的文本是 It is a good day 是否可以将句子的 It is a 部分设置为绿色 其余部分设置为红色 我用类似的东西使我的颜色的某些部分变成绿色 final Str
  • 使用 Ninject 具有多个参数的构造函数

    我正在尝试使用Ninject http www ninject org 作为 IoC 容器 但无法理解如何创建在构造函数中具有超过 1 个参数的类的实例 基本上 我有一个用于在 PCL 库中进行身份验证的服务接口 及其在 WP8 项目中的实
  • 我应该使用什么协议来进行快速命令/响应交互?

    我需要建立一个用于快速命令 响应交互的协议 我的直觉告诉我只需将一个简单的协议与 CRLF 分隔的 ascii 字符串拼凑在一起 就像 SMTP 或 POP3 的工作方式一样 如果我需要保护它 则可以通过 SSH SSL 对其进行隧道传输
  • PHP 是否优化尾递归?

    我写了一小段代码 我相信如果尾递归被优化的话应该会成功 但是它炸毁了堆栈 我应该得出 PHP 没有优化尾递归的结论吗 function sumrand n sum if n 0 return sum else return sumrand
  • C#,后台工作者

    我有一个示例 WinForms 应用程序 它使用BackgroundWorker成分 它工作正常 但是当我点击Cancel按钮取消后台线程 但它不会取消线程 当我击中Cancel呼叫按钮 CancelAsync 方法 然后在RunWorke
  • Facebook 示例拼图:河内塔

    这是 Facebook 招聘样本测试中的一个问题 有 K 个钉子 当从桩的底部到顶部观察时 每个桩可以按半径递减的顺序容纳圆盘 有N个圆盘 半径为1到N 给定钉子的初始配置和钉子的最终配置 输出从初始配置转换到最终配置所需的移动 您需要以最
  • pandas 混合位置和标签索引,无需链接

    Since ix已经自 Pandas 0 20 起已弃用 http pandas docs github io pandas docs travis whatsnew html deprecate ix 我想知道在 Pandas 中混合基于
  • 是否可以调整嵌入的 .mov 的大小?

    我嵌入的 mov 剪辑有时比显示它的位置大 所以我想调整剪辑的大小 曾尝试过width and height但这只会改变显示它的区域 它不会调整实际电影的大小 可以调整影片大小吗 如果是 怎么办 是的 您需要scale属性 有 QuickT
  • 如何从aspx页面中抓取图像?

    我在尝试着scrape来自 aspx 页面的图像 我有这段代码 可以从普通网页中抓取图像 但无法抓取 aspx 页面 因为我需要将 http post 请求发送到 aspx 页面 即使在阅读了几个线程之后 我也不知道如何做到这一点是原来的代
  • 使用蓝牙 LE 在 iOS 和 Android 之间进行通信

    我有一个工作应用程序 使用 CoreBluetooth 在 iPad 中央 和 iPhone 外围 之间进行通信 我有一项服务有两个特点 我的 Nexus 7 运行最新的 Android 4 3 支持 BTLE Android 加入 BTL
  • 给定中序和后序遍历,如何输出树的前序遍历?

    给出当我在整数数组中具有先序和中序遍历时输出树的后序遍历的代码 如何使用给定的中序和后序数组来类似地获取前序 void postorder int preorder int prestart int inorder int inostart
  • 手势字符识别

    I use Dio dictionary function gesture on screen get text to search Library that in Android can make to be the function o
  • 如何使用 SI 符号格式化 noUiSlider 的刻度标签?

    这是我的 noUiSlider 的样子 我想将刻度标签格式设置为 1000 gt 1K 900000 gt 900K 5000000 gt 5M 等 即用适当的 SI 符号缩写数字 library shiny library shinyWi