x轴更改时d3个圆圈没有响应

时间:2018-10-17 01:31:03

标签: javascript d3.js

我有一个图表,其中显示了代表时间轴上不同事件的圆圈。我提供了一些按钮,因此用户可以选择从今天起3、6、12和18个月的时间轴视图。 12和18个月的按钮可以正常工作,但3个月和6个月的按钮都无法使用。

这是blockbuilder中的工作代码。

当我console.log的开始日期和结束日期看起来不错时。所有时间轴按钮(3、6、12和18)都返回正确的日期和时间。

我完全困惑为什么有些按钮起作用而有些不起作用。

有什么想法为什么我可以指定时间表的几天而不是其他日子?

1 个答案:

答案 0 :(得分:1)

这些“下一个 [x] -months”按钮不起作用的原因在于这段代码(当前块构建器链接中的第551行):

else{
    circles.data(d3.voronoi()
    .extent([[-margin.left, -margin.top], [width + margin.right, height + margin.top]])
    .x(function(d) { return d.x; })
    .y(function(d) { return d.y; })
    .polygons(MyData)) 

如果在此之后检查数据,则会发现许多数据点已被undefined取代。我不确定造成此问题的根本原因是因为我没有d3-voronoi的经验,也没有it has been deprecated and replaced with d3-delaunay的经验。

如果您执行以下操作:

let vdata = d3.voronoi()
    .extent([[-margin.left, -margin.top], [width + margin.right, height + margin.top]])
    .x(function(d) { return d.x; })
    .y(function(d) { return d.y; })
    .polygons(MyData);

    let fdata =[];
    vdata.forEach(d => {if(d) fdata.push(d);});
    circles.data(fdata);

您将不再看到错误并且按钮将起作用,尽管我不确定最终的可视化效果是否确实是您想要的。但是问题是关于那些抛出错误的按钮,我相信这就是原因。希望这会有所帮助。