我正在使用d3线生成器创建一条线并用数据集提供它;此数据集每小时更新一次。
<END-OF-MESSAGE>.
但是,数据集每隔一小时重置一次并为空。然而,使用空数据集提供该行会使其保持不变,而我希望它会被删除,因为它没有数据。
有没有办法在输入空数据集时删除该行?
答案 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>