如何更新d3图的数据?

时间:2016-04-24 05:49:49

标签: javascript d3.js

我有一个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)

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

1 个答案:

答案 0 :(得分:1)

我认为您可以执行类似于调用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();

完整的例子: Admob native express ads