Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 高图+;R:自动显示工具提示值,单位为百万/十亿等_Javascript_R_Highcharts_R Highcharter - Fatal编程技术网

Javascript 高图+;R:自动显示工具提示值,单位为百万/十亿等

Javascript 高图+;R:自动显示工具提示值,单位为百万/十亿等,javascript,r,highcharts,r-highcharter,Javascript,R,Highcharts,R Highcharter,Highcharter(R包装用于在R中显示Highcharts绘图)会根据值自动调整轴标签,例如405将显示为405,而3'000'000将显示为3M 我想为显示的工具提示重现这一点 本文概述了如何直接在Highcharts中执行此操作。但是,我无法使用Highcharter复制此内容 相关的: JS小提琴: 我错过了什么 chart_data <- tibble( date_var = c(seq(from = as.Date('2019-09-10'), to = as.D

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

我想为显示的工具提示重现这一点

本文概述了如何直接在Highcharts中执行此操作。但是,我无法使用Highcharter复制此内容

相关的:

  • JS小提琴:

我错过了什么

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
      });
  }"
))
图表\u数据%
hc_工具提示(格式化程序=JS(
“职能(){
var轴=this.series.yAxis;
返回axis.defaultLabelFormatter.call({
轴:轴,
值:这个
});
}"
))

重要的是:它似乎适用于某些价值观,但并非所有价值观。例如,根据以上数据,我得到了第2天和第3天的正确工具提示标签,但所有其他数据都显示了原始数字。

在您提供链接的相关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:


致以最良好的祝愿

谢谢大家!!我的错。我以为
defaultLabelFormatter
也会这样做。倾向于依赖内置代码,但代码段现在可以完全正常工作。