d3使用空数据集更新行

时间:2017-02-13 09:38:10

标签: d3.js dataset

我正在使用d3线生成器创建一条线并用数据集提供它;此数据集每小时更新一次。

<END-OF-MESSAGE>.

但是,数据集每隔一小时重置一次并为空。然而,使用空数据集提供该行会使其保持不变,而我希望它会被删除,因为它没有数据。

有没有办法在输入空数据集时删除该行?

1 个答案:

答案 0 :(得分:2)

如果没有看到您的数据以及如何更新图表,很难帮助您,但在我看来,问题是您反复添加基于数据数组的路径元素(您甚至不需要)每次更新图表时都要与数据函数绑定。

另一种方法是每次更新图表时仅添加一次路径并更改其d属性。这样,如果数据为空,则路径不会显示。

这是一个演示,数据数组每五秒钟为空:

var data = [];

for(var i = 0; i < 100; i++){
  data.push({x: i*3, y:Math.random()*150});
}

var svg = d3.select("svg");

var lineGen = d3.svg.line()
  .x(d=>d.x)
  .y(d=>d.y);

var line = svg.append("path")
  .attr("fill","none")
  .attr("stroke","black");

var t = 0;
setInterval(function(){
  var newData = data.slice(0,(t%100)+1);
  line.attr("d", lineGen(newData));
  t++;
}, 50);
  
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script>
<svg></svg>