Javascript 如何更新d3图形的数据?

Javascript 如何更新d3图形的数据?,javascript,d3.js,Javascript,D3.js,我有一个d3图,其中包含频繁变化的数据点,我想在图中显示这些数据点。目前,每次更新数据对象时,我都会重新绘制完整的绘图: container.remove() container = svg.append("g"); drawContainer(); 使用drawContainer中的绘图功能: container.selectAll(".dot") .data(datajson) .enter().append("circle") .attr("class", "dot")

我有一个d3图,其中包含频繁变化的数据点,我想在图中显示这些数据点。目前,每次更新数据对象时,我都会重新绘制完整的绘图:

 container.remove()
 container = svg.append("g");
 drawContainer();
使用drawContainer中的绘图功能:

container.selectAll(".dot")
  .data(datajson)
  .enter().append("circle")
  .attr("class", "dot")
  .attr("r", 3.5)
  .attr("cx", xMap)
  .attr("cy", yMap)
  .style("fill", function(d) { return color(cValue(d));}) 
我试着简单地打电话:

  container.selectAll(".dot")
      .data(newdata)

添加新数据点,但这不会使新数据点可见。如何仅使用新数据点更新绘图?

我认为您可以执行类似于调用
drawContainer()的操作

而不是

container.selectAll(".dot")
  .data(newdata);
你可以做:

var dots = container.selectAll(".dot")
   .data(newdata);
dots.enter().append("circle")
  .attr("class", "dot")
  .attr("r", 3.5)
  .attr("cx", xMap)
  .attr("cy", yMap)
  .style("fill", function(d) { return color(cValue(d));});
dots.exit().remove();
有关完整的示例:

这是一本关于如何使用d3中的enter-exit在d3中创建更新删除点的好书