我有一个图表,其中显示了代表时间轴上不同事件的圆圈。我提供了一些按钮,因此用户可以选择从今天起3、6、12和18个月的时间轴视图。 12和18个月的按钮可以正常工作,但3个月和6个月的按钮都无法使用。
这是blockbuilder中的工作代码。
当我console.log的开始日期和结束日期看起来不错时。所有时间轴按钮(3、6、12和18)都返回正确的日期和时间。
我完全困惑为什么有些按钮起作用而有些不起作用。
有什么想法为什么我可以指定时间表的几天而不是其他日子?
答案 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);
您将不再看到错误并且按钮将起作用,尽管我不确定最终的可视化效果是否确实是您想要的。但是问题是关于那些抛出错误的按钮,我相信这就是原因。希望这会有所帮助。