Javascript D3饼图未更新中心标签

Javascript D3饼图未更新中心标签,javascript,angularjs,d3.js,Javascript,Angularjs,D3.js,我需要更新d3饼图。我能够正确地更新圆弧,但在更新中心的标签时遇到问题。我在中间的标签上显示数字的总和。有人能帮我吗? 请在下面找到这个按钮。 path=path.data(饼图(数据集)) 我正在更改单击图例时的数据集。可以看到圆弧会刷新,但中心的标签不会刷新 我对D3还不熟悉,但仍在思考问题。 提前感谢。您还应该在click listener中更新中心文本和其他标签 var sum = d3.sum(dataset, function(d) { return d.count;

我需要更新d3饼图。我能够正确地更新圆弧,但在更新中心的标签时遇到问题。我在中间的标签上显示数字的总和。有人能帮我吗? 请在下面找到这个按钮。

path=path.data(饼图(数据集))

我正在更改单击图例时的数据集。可以看到圆弧会刷新,但中心的标签不会刷新 我对D3还不熟悉,但仍在思考问题。
提前感谢。

您还应该在click listener中更新中心文本和其他标签

  var sum = d3.sum(dataset, function(d) {
    return d.count;
  });

  svg.select("text.centerText")
    .text(sum);

  textG.data(pie(dataset));

  textG.select("text")
    .transition()
    .duration(750)
    .attr('transform', function(d) {
      return 'translate(' + arc.centroid(d) + ')';
    })
    .text(function(d, i) {
      return d.data.count > 0 ? d.data.count : '';
    });
(功能(d3){
"严格使用",;
var宽度=360;
var高度=300;
变量半径=数学最小值(宽度、高度)/4;
var donutWidth=40;
变量legendRectSize=18;
var legendSpacing=4;
变量数据1=[{
“标签”:“标签1”,
计数:5
},
{
“标签”:“标签2”,
计数:10
},
{
“标签”:“标签3”,
计数:15
}
];
变量数据2=[{
“标签”:“标签1”,
计数:30
},
{
“标签”:“标签2”,
计数:20
},
{
“标签”:“标签3”,
计数:9
}
];
var color=d3.scaleOrdinal(d3.schemeCategory20b);
var svg=d3。选择(“#图表”)
.append('svg')
.attr('width',width)
.attr('height',height)
.append('g')
.attr('transform','translate(+)(宽度/2)+
",;
var arc=d3.arc()
.内半径(半径-宽度)
.外层(半径);
var pie=d3.pie()
.价值(功能(d){
返回d.count;
})
.sort(空);
变量工具提示=d3。选择(“#图表”)
.append('div'))
.attr('class','tooltip');
工具提示。追加('div')
.attr('class','label');
工具提示。追加('div')
.attr('class','count');
工具提示。追加('div')
.attr(“类别”、“百分比”);
var数据集=data1;
var isDataSet1=真;
var path=svg.selectAll('path')
.数据(饼图(数据集))
.输入()
.append('路径')
.attr('d',弧)
.attr('fill',函数(d,i){
返回颜色(d.数据.标签);
})//已更新(已删除分号)
.每个功能(d){
这是。_电流=d;
}); 
var sum=d3.sum(数据集,函数(d){
返回d.count;
});
var centerText=svg.append(“文本”)
.attr('类','中心文本')
.attr('dy','0.35em'))
.attr('text-anchor','middle')
.attr('颜色','黑色')
.文本(总和);
var textG=svg.selectAll(“.labels”)
.数据(饼图(数据集))
.enter().append('g')
.attr(“类”、“标签”);
text.append('text')
.attr('transform',函数(d){
返回“translate”('+弧形心(d)+');
})
.attr('dy','.35em'))
.style('text-anchor','middle')
.attr('fill','fff')
.文本(功能(d,i){
返回d.data.count>0?d.data.count:“”;
});
var legend=svg.selectAll(“.legend”)
.data(color.domain())
.输入()
.append('g')
.attr('类','图例')
.attr('transform',函数(d,i){
变量高度=legendRectSize+legendSpacing;
var offset=height*color.domain().length/2;
var horz=5*legendRectSize;
var vert=i*高度-偏移量;
返回“translate”(“+horz+”,“+vert+”);
});
图例.append('rect')
.attr('宽度',10)
.attr('height',10)
.style('填充',颜色)
.style('笔划',颜色)
.attr('rx',5)
.attr('ry',5)//已更新(删除分号)
.on('click',函数(标签){
如果(isDataSet1){
数据集=数据2;
}否则{
数据集=数据1;
}
isDataSet1=!isDataSet1;
var rect=d3。选择(此);
pie.value(函数(d){
返回d.count;
}); 
path=path.data(饼图(数据集));
path.transition()
.持续时间(750)
.attrTween('d',函数(d){
var interpolate=d3.interpolate(该电流,d);
该值为._电流=插值(0);
返回函数(t){
返回弧(插值(t));
}; 
});
var sum=d3.sum(数据集,函数(d){
返回d.count;
});
svg.select(“text.centerText”)
.文本(总和);
文本数据(饼图(数据集));
textG.选择(“文本”)
.transition()
.持续时间(750)
.attr('transform',函数(d){
返回“translate”('+弧形心(d)+');
})        
.文本(功能(d,i){
返回d.data.count>0?d.data.count:“”;
});
});
图例.append('text')
.attr('x',13+legendSpacing)
.attr('y',13-legendSpacing)
.文本(功能(d){
返回d;
});
})(窗口d3)
#图表{
保证金:0自动;
位置:相对位置;
/*高度:360px;
宽度:360px*/
}
.工具提示{
背景:#eee;
盒影:0 0 5像素#999999;
颜色:#333;
显示:无;
字体大小:12像素;
左:130像素;
填充:10像素;
位置:绝对位置;
文本对齐:居中;
顶部:95像素;
宽度:80像素;
z指数:10;
}
.传奇{
字体大小:12像素;
}
直肠{
光标:指针;
笔画宽度:2;
}
直肠残疾{
填充:透明!重要;
}
h1{
字体大小:14px;
文本对齐:居中;
}

2012年工作日多伦多停车罚单
更改数据
  var sum = d3.sum(dataset, function(d) {
    return d.count;
  });

  svg.select("text.centerText")
    .text(sum);

  textG.data(pie(dataset));

  textG.select("text")
    .transition()
    .duration(750)
    .attr('transform', function(d) {
      return 'translate(' + arc.centroid(d) + ')';
    })
    .text(function(d, i) {
      return d.data.count > 0 ? d.data.count : '';
    });