Highcharts + R:自动显示 million/billion 等中的工具提示值
Highcharts + R: Show tooltip values in million/billion etc. automatically
Highcharter(用于在 R 中显示 Highcharts 图的 R 包装器)会根据值自动调整轴标签,例如405 将显示为 405,而 3'000'000 将显示为 3M。
我想为显示的工具提示重现此内容。
本文概述了如何直接在 Highcharts 中执行此操作。但是,我无法使用 Highcharter 重现此内容。
相关:
highcharts tooltip format millions billions
JS Fiddle: http://jsfiddle.net/BlackLabel/ynCKW/104/
我错过了什么?
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
});
}"
))
重要提示:它似乎适用于 一些 值,但不适用于 所有 值。例如,根据上述数据,我得到了第二个和第三个日期的正确工具提示标签,但其他所有显示的都是原始数字。
在相关的 SO 问题中,您提供了一个 link 给,假设是短数字末尾有零 (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
此致!
Highcharter(用于在 R 中显示 Highcharts 图的 R 包装器)会根据值自动调整轴标签,例如405 将显示为 405,而 3'000'000 将显示为 3M。
我想为显示的工具提示重现此内容。
本文概述了如何直接在 Highcharts 中执行此操作。但是,我无法使用 Highcharter 重现此内容。
相关:
highcharts tooltip format millions billions
JS Fiddle: http://jsfiddle.net/BlackLabel/ynCKW/104/
我错过了什么?
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
});
}"
))
重要提示:它似乎适用于 一些 值,但不适用于 所有 值。例如,根据上述数据,我得到了第二个和第三个日期的正确工具提示标签,但其他所有显示的都是原始数字。
在相关的 SO 问题中,您提供了一个 link 给,假设是短数字末尾有零 (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
此致!