gpt4 book ai didi

d3.js - NVD3 - 更新数据时不均匀的滴答声

转载 作者:行者123 更新时间:2023-12-03 18:47:46 25 4
gpt4 key购买 nike

当我更新现有 NVD3 图表中的数据时,沿 x 轴的刻度不会以固定间隔呈现。

我正在创建一个 multiBarChart数据来自 d3.json() .数据表示某个日期范围内的点击次数。我有一个单独的日期范围选择器来更新图表的数据。

我有以下内容来创建图表(简化):

initGraph = function(url) {
d3.json(url, function(data) {
nv.addGraph(function() {
chart = nv.models.multiBarChart();

d3.select('#chart svg').datum(data).transition().duration(500).call(chart);
nv.utils.windowResize(chart.update);

return chart;
});
});
};

以及更新它的以下函数,该函数在日期选择器中调用:
redrawGraph = function(url) {
d3.json(url, function(data) {

d3.select('#chart svg').datum(data).transition().duration(500).call(chart);
nv.utils.windowResize(chart.update);
});
};

一切似乎都很好,但有时刻度间距最终会不一致:

Wonky ticks

这仅在更新现有图表时发生。

我花了相当多的时间来验证数据是否正确——x 值以固定值递增——所以我只能认为在重新绘制图表时我遗漏了一些东西。

最佳答案

有点晚了,但你需要打电话chart.update()而不是注册一个新的窗口监听器,这样代码就变成了:

redrawGraph = function(url) {
d3.json(url, function(data) {

d3.select('#chart svg').datum(data).transition().duration(500).call(chart);
chart.update();
});
};

基本上每次在 nvd3 中更新图表时,都需要调用 chart.update重新绘制它。

请注意 nv.utils.windowResize(chart.update)是等价于
// Register an event listener on windowResize
nv.utils.windowResize(function() {
// Every time the window is resized, redraw the chart
chart.update();
});

所以在每次更新时都这样做不会有很好的效果。

关于d3.js - NVD3 - 更新数据时不均匀的滴答声,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14543660/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com