我是D3的初学者,非常感谢任何帮助。
在此图表中,为类别"胜利的每个条目生成一个圆圈。"因此,在这种情况下,有4个圆圈生成不同的半径。
我想返回" wins,"的数据但仅适用于类别"最佳图片。"在这种情况下,只会生成2个圆圈。是否可以通过添加函数来实现 - .attr(' r',函数(d){return radiusScale(d.wins);})如果是这样,我应该更改什么?
var data = [
{decade: '1920s', category: 'Best Picture', wins: 2, nominations: 3},
{decade: '1920s', category: 'Best Director', wins: 1, nominations: 9},
{decade: '1930s', category: 'Best Picture', wins: 3, nominations: 6},
{decade: '1930s', category: 'Best Director', wins: 1, nominations: 7},
];
var radiusScale = d3.scale.sqrt().domain([0, 40]).range([0, 40]);
d3.select('svg')
.selectAll('circle')
.data(data)
.enter()
.append('circle')
.attr('r', function(d) {return radiusScale(d.wins);})
.attr('cx', function(d, i) {return i * 80 + 50;})
.attr('cy', 50);
答案 0 :(得分:0)
使用.filter()
函数仅获取所需的数据元素:
d3.select('svg')
.selectAll('circle')
.data(data.filter(function(d) { return d.category == "Best Picture"; }))
.enter()
...