2015-10-15 83 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>