如何在 Chart.js 中将 Ticks 格式化程序与 Typescript 结合使用?

问题描述 投票:0回答:1

如果我使 Chart.js 使用语言环境 en-US,我会得到最佳格式的比例数字。 enter image description here

如果我像文档中那样使用刻度回调:

ticks: {
     callback: function(value) {
        return value.toString();
     }
}

我没有获得数字的最佳宽度。

enter image description here

上述文档指示应该可以将 Chart.js 格式和自定义结合起来

Chart.Ticks.formatters.numeric.apply(this, [value, index, ticks]);

但这不适用于打字稿,但我收到错误“属性‘Ticks’在‘typeof Chart’类型上不存在。”

我尝试过的另一个变体是

Chart.registry.scales.get('ticks')?.formatters.numeric.apply(this, [value, index, ticks])

其中似乎存在刻度线,但我没有办法访问格式化程序。来自助手的可导出函数只有 formatNumber,这需要区域设置,而且我认为无论如何都会跳过 Chart.js 的所有数字宽度优化。

问题的根本原因是我的客户希望唯一的格式是小数点,并且任何类型的千位分隔符都不应该存在。不可能使用任何类型的手动解决方案通过剪切小数等来格式化数字,因为比例可以是任何东西并且缩放到任何东西都是可能的。

Chart.js:4.4.2 打字稿:4.9.4

typescript chart.js
1个回答
0
投票

我可以使用它

      afterTickToLabelConversion: (axis) => {
        axis.ticks.forEach((tick) => tick.label = tick.label?.toString());
      },

在一次绘制过程中会多次调用此函数,首先使用初始比例 (0,1),然后使用不同数量的刻度进行多次调用,最后以图表中可见的七个刻度结束。

© www.soinside.com 2019 - 2024. All rights reserved.