Javascript d3 ticks函数返回的时间刻度数与输入/参数中指定的时间刻度数不同。(简体中文)

Javascript d3 ticks函数返回的时间刻度数与输入/参数中指定的时间刻度数不同。(简体中文),javascript,reactjs,d3.js,charts,Javascript,Reactjs,D3.js,Charts,我正在尝试用React JS构建一个响应图表,我对D3不是很熟悉。我注意到在我的代码中,ticks函数返回的tick数与我指定的不同。这是我的密码: const pixelsPerTick = 90; const xScale = d3.scaleTime() .domain([moment(xDomain[0]).toDate(), moment(xDomain[1]).toDate()]) .range(xRange); const ge

我正在尝试用React JS构建一个响应图表,我对D3不是很熟悉。我注意到在我的代码中,ticks函数返回的tick数与我指定的不同。这是我的密码:

 const pixelsPerTick = 90;

    const xScale = d3.scaleTime()
        .domain([moment(xDomain[0]).toDate(), moment(xDomain[1]).toDate()])
        .range(xRange);

    const getXOffset = value => xScale(moment(value).toDate());
    const getYOffset = value => {
        const elementIndex = yDomain.findIndex(item => item === value);
        return (elementIndex + 1) * 50;
    };
    const numberOfTicksTarget = Math.max(
        1,
        Math.floor(
            (xRange[1] - xRange[0]) / pixelsPerTick
        )
    );

    const xTicks = useMemo(() => {

        return xScale.tickValues(numberOfTicksTarget)
            .map(value => ({
                value,
                xOffset: xScale(moment(value).toDate());
            }));
    }, [
        xDomain.join("-"),
        xRange.join("-")
    ]);
此外,即使我写了const pixelsPerTick=90每个刻度的像素似乎并不总是相同的。另外,如果numberOfTicksTarget为11,则xTicks将返回一个包含11个元素的数组