Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用JSON更新D3饼图_Javascript_Json_D3.js - Fatal编程技术网

Javascript 用JSON更新D3饼图

Javascript 用JSON更新D3饼图,javascript,json,d3.js,Javascript,Json,D3.js,我有这个饼图: 当我从长度为3的数据集更改为长度为2的数据集时,它似乎不喜欢 原始数据: var dataSet1 = [{ "id": "001 Helicopter", "name": "Helicopter", "priority": "highClass", "value": 1 }, { "id": "005 Rear Rotor", "name": "Rear Rotor", "priority": "lowClass", "value": 1 },

我有这个饼图:

当我从长度为3的数据集更改为长度为2的数据集时,它似乎不喜欢

原始数据:

var dataSet1 = [{
  "id": "001 Helicopter",
  "name": "Helicopter",
  "priority": "highClass",
  "value": 1
}, {
  "id": "005 Rear Rotor",
  "name": "Rear Rotor",
  "priority": "lowClass",
  "value": 1
}, {
  "id": "002 Rotor",
  "name": "Rotor",
  "priority": "lowClass",
  "value": 1
}]
更改数据集:

function changeData(data) {
    path.data(pie(data));
    path.transition().duration(750).attrTween("d", arcTween); // redraw the arcs

  }
传递函数新数据:

changeData(dataSet2);
数据集2:

var dataSet2 = [{
  "id": "001 Helicopter",
  "name": "Helicopter",
  "priority": "highClass",
  "value": 1
}, {
  "id": "004 Seat",
  "name": "Seat",
  "priority": "lowClass",
  "value": 1
}]
它似乎没有更新数据集。两种模式中的一种,即“直升机”调整良好(占图表的1/2),但其他模式调整不好。我见过这个例子:

它说使用这个:

function type(d) {
  d.apples = +d.apples || 0;
  d.oranges = +d.oranges || 0;
  return d;
}

但是我不知道如何在我的数据集中实现这一点:(有什么想法吗?

您没有处理更新函数中的
输入
更新
退出
模式:

function changeData(data) {
    var path = svg.datum(data)
      .selectAll("path").data(pie); //<-- update selection
    path.exit().remove(); //<-- exit selectin
    path.transition().duration(750).attrTween("d", arcTween); // redraw the arcs for the paths left
  }
函数更改数据(数据){
var path=svg.datum(数据)

.selectAll(“path”).data(pie);//集成了您所说的更新,以便在我添加数据时正确更改:,再次感谢