2015-10-15 97 views
-1

所以我们可以说假设我有一个JSON数组是这样的:在D3中滚动项目?

[{"country":"Argentina", "impressions":199}, 
{"country":"Peru", "impressions":100}, 
{"country":"Brazil", "impressions":500} 
{"country":"Argentina", "impressions":201}, 
{"country":"Peru", "impressions":504},] 

,我想用D3.js创建每个国家仅列出一次的表。 D3中有什么像SQL中的“select distinct”?我已经拥有了表格的所有代码,并且它会生成一张表格,其中显示的数据与上面显示的完全相同,但我需要汇总数据。

谢谢你们能帮助我的任何帮助!

+0

当您汇总时,不同的“展示次数”会发生什么变化?他们得到总结,平均,最大等... – Mark

+0

@Mark我希望他们得到总结 - 目前没有任何反应,因为他们正在表中,因为他们出现在数据集中。 – sconnors37

回答

0

- d3.nest with a rollup -

var nested_data = d3.nest() 
    .key(function(d) { 
    return d.country; 
    }) 
    .rollup(function(o){ 
    return d3.sum(o,function(d){ 
     return d.impressions; 
    }); 
    }) 
    .entries(data); 

返回:

enter image description here

全部工作代码:

<!DOCTYPE html> 
 
<html> 
 

 
<head> 
 
    <script data-require="[email protected]" data-semver="3.5.3" src="//cdnjs.cloudflare.com/ajax/libs/d3/3.5.3/d3.js"></script> 
 
</head> 
 

 
<body> 
 
    <script> 
 
    var data = [{ 
 
     "country": "Argentina", 
 
     "impressions": 199 
 
    }, { 
 
     "country": "Peru", 
 
     "impressions": 100 
 
    }, { 
 
     "country": "Brazil", 
 
     "impressions": 500 
 
    }, { 
 
     "country": "Argentina", 
 
     "impressions": 201 
 
    }, { 
 
     "country": "Peru", 
 
     "impressions": 504 
 
    }]; 
 

 
    var nested_data = d3.nest() 
 
     .key(function(d) { 
 
     return d.country; 
 
     }) 
 
     .rollup(function(o){ 
 
     return d3.sum(o,function(d){ 
 
      return d.impressions; 
 
     }); 
 
     }) 
 
     .entries(data); 
 
     
 
    d3.select('body').html(JSON.stringify(nested_data)); 
 
    </script> 
 
</body> 
 

 
</html>