D3.js 是否更改与D3选择关联的基础数据?

D3.js 是否更改与D3选择关联的基础数据?,d3.js,D3.js,我在D3中有一些圆圈,上面附有数据: var data = [[0,1],[2,10],[3,4],[2,4]] var circles = svg.selectAll(".dot") .data(data) .enter().append("circle") .attr("class", "dot") .attr("r", 5) .attr("cx", d[0]) .attr("cy", d[1]) 我想将绑定到这些圆的基础数据修改为对象数组: circles =

我在D3中有一些圆圈,上面附有数据:

var data = [[0,1],[2,10],[3,4],[2,4]]

var circles = svg.selectAll(".dot")
  .data(data)
  .enter().append("circle")
  .attr("class", "dot")
  .attr("r", 5)
  .attr("cx", d[0])
   .attr("cy", d[1])
我想将绑定到这些圆的基础数据修改为对象数组:

circles = circles.data().map(function(d) {
  return {x: d[0], y: d[1]}
})

如何更改与D3选择关联的基础数据?

您有两个选项:在将数据数组加入元素之前,使用
array.map
函数修改数据数组,或者使用修改每个数据对象而不更改数据联接。您无法从选择中获取原始数据数组并对其进行修改

对于第一个选项,您的代码是:

var data = [[0,1],[2,10],[3,4],[2,4]];

data = data.map(function(d) {
  return {x: d[0], y: d[1]};
} );

var circles = svg.selectAll(".dot")
  .data(data)
  .enter().append("circle")
  .attr("class", "dot")
  .attr("r", 5)
  .attr("cx", function(d){return d.x;})
  .attr("cy", function(d){return d.y;})
var data = [[0,1],[2,10],[3,4],[2,4]];

var circles = svg.selectAll(".dot")
  .data(data)
  .enter().append("circle")
  .datum( function(d) {
      return {x: d[0], y: d[1]};
  } )
  .attr("class", "dot")
  .attr("r", 5)
  .attr("cx", function(d){return d.x;})
  .attr("cy", function(d){return d.y;})
对于第二个选项,您的代码是:

var data = [[0,1],[2,10],[3,4],[2,4]];

data = data.map(function(d) {
  return {x: d[0], y: d[1]};
} );

var circles = svg.selectAll(".dot")
  .data(data)
  .enter().append("circle")
  .attr("class", "dot")
  .attr("r", 5)
  .attr("cx", function(d){return d.x;})
  .attr("cy", function(d){return d.y;})
var data = [[0,1],[2,10],[3,4],[2,4]];

var circles = svg.selectAll(".dot")
  .data(data)
  .enter().append("circle")
  .datum( function(d) {
      return {x: d[0], y: d[1]};
  } )
  .attr("class", "dot")
  .attr("r", 5)
  .attr("cx", function(d){return d.x;})
  .attr("cy", function(d){return d.y;})

第三个选项是修改所选元素的
。\uuuuuuuuuuuuuuuuuuuuuuuuu
。哦,当然,如果你想吓唬d3新手,你可以提出来!对于@turtle,这基本上就是
.datum()
方法所做的。