2016-06-22 27 views
1

我是新的d3.js和javascript,我需要通過其展示次數排名前10位的廣告系列。我怎樣才能做到這一點?如何提取d3.js中的前10個數據?

下面是我的代碼:

var parseDate = d3.time.format("%d-%b-%y").parse; 

d3.csv("ctr_impressions.csv", function(error, csv_data){ 
    var data = d3.nest() 
       .key(function(d) {return d.Campaign;}) 
       .rollup(function(d){ 
        return d3.sum(d, function(g) { 
         return g.Impressions;})}) 
       .entries(csv_data); 

     data.forEach(function (d) { 
      d.Campaign = d.key; 
      d.Impressions = d.values; 
     }); 
    var p = d3.select("body").selectAll("p") 
      .data(data) 
      .enter() 
      .append("p") 
      .text(function(d){ 
      return " Campaign = " + d.Campaign + " Impressions = " + d.Impressions; 
      }); 
}); 

謝謝。感謝您的幫助。

回答

0

很難在沒有看到您的data的情況下提供答案,但一般模式如下所示:您將對數據進行排序,然後對其進行分片。

只是atfer:

data.forEach(function (d) { 
     d.Campaign = d.key; 
     d.Impressions = d.values; 
}); 

你寫:

var topData = data.sort(function(a, b) { 
    return d3.descending(+a.Impressions, +b.Impressions); 
}).slice(0, 10); 

然後用這個topData爲您的段落:

var p = d3.select("body").selectAll("p") 
     .data(topData) 
     .enter() 
     .append("p") 
     .text(function(d){ 
     return " Campaign = " + d.Campaign + " Impressions = " + d.Impressions; 
     }); 
+0

它的作品,非常感謝你:) – beneditatan