【问题标题】:How to format dygraphs labels in R - comma separate thousands place?如何在 R 中格式化 dygraphs 标签 - 逗号分隔数千位?
【发布时间】:2015-04-13 17:20:09
【问题描述】:

我正在使用htmlwidget dygraphs for R。我的系列范围从大约 0 到 150,000。

我尝试过使用 dyOptions(labelsKMB = "K") - 这会将 y 轴格式化为 0K, 20K, 40K, ... - 但是,因此,图例也使用四舍五入的值格式化 - 例如22K, 42K, etc..

我想知道以下是否可行以及如何实现:

  1. 以千为单位设置 y 轴的格式,但将图例保留为实际 (非四舍五入)值?
  2. 在 y 轴和图例中的一个(或两个)上使用逗号分隔的千位格式?也就是说,不是在 y 轴上显示10000,而是格式化为10,000——同样,图例中的实际值(例如2523)格式化为2,523

我将其推送到交互式 RMarkdown 文档中。也许自定义 CSS 是一种方法?

【问题讨论】:

    标签: r shiny r-markdown dygraphs


    【解决方案1】:

    您可以指定特定的 javascript 函数来独立设置 x 轴的标签。例如,以下是如何修改 dygraph 演示的 y 轴:

    library(dygraphs)
    library(htmlwidgets)
    
    nhtempBig<-nhtemp*500
    nhtempBig
    
    valueFormatter<-"function formatValue(v) {
    var suffixes = ['', 'K', 'M', 'G', 'T'];
      if (v < 1000) return v;
      var magnitude = Math.ceil(String(Math.floor(v)).length / 3-1);
      if (magnitude > suffixes.length - 1)
        magnitude = suffixes.length - 1;
      return String(Math.round(v / Math.pow(10, magnitude * 3), 2)) +suffixes[magnitude]}"
    
    
    
    
     dygraph(nhtempBig, main = "New Haven Temperatures") %>%
      dyAxis("y", label = "Temp (F)", valueRange = c(0, 150000),axisLabelFormatter=JS(valueFormatter)) %>%
      dyOptions(axisLineWidth = 1.5, fillGraph = TRUE, drawGrid = FALSE)
    

    我只是做了一个虚拟函数来更改轴标签,图例应该保持不变。

    编辑:添加了格式化功能,修改自dygraphexample之一

    【讨论】:

    • +1 啊,没有意识到你可以在整个过程中撒上 JS。我想要的是更接近这个的东西:axisLabelFormatter=JS("function(x) {return x.toString().replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, '$1,')}") - 我将暂时搁置这个问题,看看其他人是否有更多想法。
    • 当然,我添加了一个在 dygraph 示例之一中找到的函数,该函数格式化数字在千位后加 K 等
    【解决方案2】:

    用一个完整的例子扩展我上面的评论:

    library(dygraphs)
    library(htmlwidgets)
    FUNC_JSFormatNumber <- "function(x) {return x.toString().replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, '$1,')}"
    dygraph(ldeaths) %>%
      dyAxis("y", axisLabelFormatter=JS(FUNC_JSFormatNumber), valueFormatter=JS(FUNC_JSFormatNumber))
    

    【讨论】:

      猜你喜欢
      • 2017-08-23
      • 1970-01-01
      • 2020-05-29
      • 2015-06-10
      • 1970-01-01
      • 1970-01-01
      • 2022-12-06
      • 1970-01-01
      • 2014-11-16
      相关资源
      最近更新 更多