如何在d3.js中提取前10个数据?

时间:2016-06-22 08:47:30

标签: javascript csv d3.js graph

我是d3.js和javascript的新手,我需要按其展示次数排名前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;
          });
});

谢谢。感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

很难在没有看到data的情况下提供答案,但一般模式如下:您将对数据进行排序,然后您将对其进行切片。

刚开始:

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;
      });