我有一个需要绘制的大型时间序列数据集,我正在尝试使用D3来完成它。我计划让我的图表的x轴为时间,并允许图形在x方向上移动。我想让图表仅加载/显示屏幕上当前时间范围内存在的点。
例如,如果我的数据集的次数为1-100,但图表以1-10显示的时间开始,则图表应仅显示1-10点。然后用户可以向右移动并查看时间5-15,图表应该相应地更新。
任何人都可以向我解释如何通过d3完成此操作吗?我很难将立即加载的整个数据集中的理解与立即绘制成数据子集的选择性图形。
答案 0 :(得分:2)
我认为您正在寻找selection.filter()
功能。例如,您可以:
var allNodes = vis.selectAll("Nodes").data(data.nodes);
var validNodes = allNodes.filter(function(d){return (d.time>1 && d.time <10)});
//use normal graph functions on validNodes.
您还可以直接在节点数组上应用过滤器。