我是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;
});
});
谢谢。感谢您的帮助。
答案 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;
});