如何使用d3在数据中选择类别

时间:2014-11-30 21:38:45

标签: javascript d3.js

我是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);    

1 个答案:

答案 0 :(得分:0)

使用.filter()函数仅获取所需的数据元素:

d3.select('svg')
  .selectAll('circle')
  .data(data.filter(function(d) { return d.category == "Best Picture"; }))
  .enter()
  ...