【问题标题】:Highcharts + R: Show tooltip values in million/billion etc. automaticallyHighcharts + R:自动以百万/十亿等显示工具提示值
【发布时间】:2019-09-11 10:07:27
【问题描述】:

Highcharter(用于在 R 中显示 Highcharts 图的 R 包装器)会根据值自动调​​整轴标签,例如405 将显示为 405,而 3'000'000 将显示为 3M。

我想为显示的工具提示重现此内容。

本文概述了如何直接在 Highcharts 中执行此操作。但是,我无法使用 Highcharter 重现这一点。

相关:

我错过了什么?

chart_data <- tibble(
  date_var = c(seq(from = as.Date('2019-09-10'), to = as.Date('2019-09-15'), by = 1))
  , value = c(2304, 50000, 678900, 98457, 124684, 249547)
  )

hchart(chart_data, type = 'line', hcaes(x = date_var, y = value)) %>% 
  hc_tooltip(formatter = JS(
  "function() {
      var axis = this.series.yAxis;

      return axis.defaultLabelFormatter.call({
        axis: axis,
        value: this.y
      });
  }"
))

重要提示:它似乎适用于 一些 值,但不适用于 所有 值。例如,使用上述数据,我得到了第二个和第三个日期的正确工具提示标签,但其他所有数据都显示原始数字。

【问题讨论】:

    标签: javascript r highcharts r-highcharter


    【解决方案1】:

    在您提供链接的相关 SO 问题中,假设是短数字末尾有零 (0)。只需使用@Paweł Fus 回答中的先前代码即可:

    formatter: function() {
          var ret = '',
            multi,
            axis = this.series.yAxis,
            numericSymbols = ['k', 'M', 'G', 'T', 'P', 'E'],
            i = numericSymbols.length;
          while (i-- && ret === '') {
            multi = Math.pow(1000, i + 1);
            if (axis.tickInterval >= multi && numericSymbols[i] !== null) {
              ret = Highcharts.numberFormat(this.y / multi, -1) + numericSymbols[i];
            }
          }
          return ret;
        }
    

    jsFiddle:https://jsfiddle.net/BlackLabel/yrb7gzap

    最好的问候!

    【讨论】:

    • 谢谢!我的错。我认为defaultLabelFormatter 也会这样做。更喜欢依赖内置代码,但现在 sn-p 工作得很好。
    猜你喜欢
    • 1970-01-01
    • 2019-01-22
    • 2020-12-06
    • 1970-01-01
    • 2022-01-24
    • 2013-06-06
    • 2021-12-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多