如果我使 Chart.js 使用语言环境 en-US,我会得到最佳格式的比例数字。
如果我像文档中那样使用刻度回调:
ticks: {
callback: function(value) {
return value.toString();
}
}
我没有获得数字的最佳宽度。
上述文档指示应该可以将 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
我可以使用它
afterTickToLabelConversion: (axis) => {
axis.ticks.forEach((tick) => tick.label = tick.label?.toString());
},
在一次绘制过程中会多次调用此函数,首先使用初始比例 (0,1),然后使用不同数量的刻度进行多次调用,最后以图表中可见的七个刻度结束。