D3 时间刻度 tickFormat 不根据范围排序

D3 time scale tickFormat doesn't ordered based on the range

我有以下代码:

import { scaleTime } from "d3-scale";
import { timeFormat } from "d3-time-format";

const scale = scaleTime().domain([1625747708797, 1625747709671])
.range([0, 1317]);

const ticks = scale.ticks();
const tickFormat = scale.tickFormat(1, '%L');

console.log(ticks.map(tickFormat));

控制台输出为:

["800", "900", "000", "100", "200", "300", "400", "500", "600"]

为什么不从头到尾对列表进行排序:

["000", "100", ...., "800"]

想象一下,你的数据集已经存在很多年了,而你 运行:

const tickFormat = scale.tickFormat(1, '%m');
ticks.map(tickFormat);

你会得到一个由月份数字 ([01-12]) 组成的字符串数组,但它们会乱序,因为你的数据是按时间顺序排列的(年,然后是月,等等)。