【发布时间】:2015-09-03 22:44:27
【问题描述】:
我有一个非常简单的数据结构,我希望根据同一对象中的不同键/值对更新 D3 圆环图。这是数据:
var data = [
{
id: 1,
name: 'Bernie Sanders',
name2: 'Jesus Christ',
color: '#0362ad',
state: 3.55,
national: 4.88
},
{
id: 2,
name: 'Donald Trump',
name2: 'Miley Cyrus',
color: '#f0a611',
state: 1.36,
national: 2.65
}
]
我正在通过以下方式设置我的饼图:
var pie = d3.layout.pie()
.sort(null)
.value( function(d) { return d.state });
var arc = d3.svg.arc()
.outerRadius(radius - 30)
.innerRadius(radius - 80);
var paths = chart.selectAll('g')
.data(pie(data), function(d) { return d.data.id })
.enter()
.append('g')
.attr('class', 'arc')
.attr('transform', 'translate(' + (radius - margin.left) + ',' + (radius - margin.top) + ')');
var arcs = paths.append('path')
.attr('d', arc)
.style('fill', function(d) { return d.data.color; });
我有一个update() 函数,我试图在其中更改圆环图值以显示national 值而不是state 值。
// "which" is equal to 'state' or 'national'
function update(which) {
// change location of values
pie.value( function(d) { return d[which] );
// compute new angles
paths.data(pie(data));
// update arcs
arcs.attr('d', arc);
};
我的弧没有正确更新,当我将它们记录到控制台时,__data__ 属性仍然显示初始化属性 (d.state) 的值和角度。
如何正确计算每条弧的新路径?
【问题讨论】:
标签: javascript d3.js