javascript - d3 ticks 函数不返回与输入/参数中指定的相同数量的时间刻度。(反应 JS)
问题描述
我正在尝试在 React JS 中构建一个响应式图表,但我对 D3 不是很熟悉。我注意到在我的代码中,刻度函数不会返回与我指定的相同数量的刻度。这是我的代码:
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 pixelPerTick = 90; 每个刻度的像素似乎并不总是相同的。此外,如果 numberOfTicksTarget为 11,xTicks返回一个包含 11 个元素的数组。
解决方案
推荐阅读
- web - IIS 上的部署问题
- javascript - 为什么反应路由器网址更改但组件未加载到我的嵌套路由器应用程序中
- blogger - 如何在博客帖子中创建带有图像的帖子列表
- node.js - 将 React Login 连接到 express/SQL 服务器后端
- kotlin - 协程作用域构造函数内协程上下文的 Kotlin 组合
- reactjs - 运行 npm start 时出现以下错误。我已经尝试重新构建代码,但我仍然得到它
- r - 如何将作为列表读取的闪亮输出对象转换为数据框?
- php - 将 fopen/fwrite 转换为 WordPress WP_Filesystem
- javascript - 在 json 对象中转换 php 数组的最佳方法(而不是在 json 单个文件中)
- powerbi - 平均复杂