D3.js 使用空数据集更新d3行

D3.js 使用空数据集更新d3行,d3.js,dataset,D3.js,Dataset,我正在使用d3 line generator创建一条线,并向其提供数据集;此数据集每小时更新一次 var myline = d3.svg.line() .x(function(d) { return x(d.date); }) .y(function(d) { return y(d.y); }); svg.append("path") .data(dataset) .attr("class", "line") .attr("d", myline(dataset));

我正在使用d3 line generator创建一条线,并向其提供数据集;此数据集每小时更新一次

var myline = d3.svg.line()    
  .x(function(d) { return x(d.date); })
  .y(function(d) { return y(d.y); });

svg.append("path")
  .data(dataset)
  .attr("class", "line")
  .attr("d", myline(dataset));
但是,每满一小时数据集都会重置并为空。但是,向该行输入一个空数据集时,它保持不变,而我希望它被删除,因为它没有数据


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

如果不查看数据以及如何更新图表,很难为您提供帮助,但在我看来,这里的问题是,您重复添加基于数据数组的path元素(您甚至不需要与数据函数绑定)每次更新图表时

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

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

var数据=[];
对于(变量i=0;i<100;i++){
push({x:i*3,y:Math.random()*150});
}
var svg=d3.选择(“svg”);
var lineGen=d3.svg.line()
.x(d=>d.x)
.y(d=>d.y);
var line=svg.append(“路径”)
.attr(“填充”、“无”)
.attr(“笔划”、“黑色”);
var t=0;
setInterval(函数(){
var newData=data.slice(0,(t%100)+1);
line.attr(“d”,lineGen(newData));
t++;
}, 50);


您可以删除该行,然后再次运行该函数以创建该行。所以只需选择按id并删除。或者您可以只给它默认值,例如,全部为零。举个例子也许会有好处。还有,空是指根本没有数据吗?如何表示空数据集?数据集是空的,就像dataset=[]这正是我要寻找的。希望我能在自己的代码中复制这一点。对于空数据集,我的意思是数据集=[]。如果数据集包含的值甚至为null,它将正常工作,但是我正在创建一行API发送的内容,并不时接收dataset=[]是的,我看到了您的评论,我刚刚更新了我的答案。在演示中,空数据集是
[]
,就像您的情况一样…看起来我的错误是在更新数据集之前将更新的数据集绑定到行上:/