我的数据是这样的。
{ date : "25-1-2012",
sentiment : "Positive", could be positive,negative or neutral
year: 2012
}
我的代码就像这样
var dateDim = ndx.dimension(function(d) {return d.date;});
我想要达到的目标是在日期分组,我可以在所有日期知道有多少情绪是积极的,有多少是消极的。 然后我想将日期作为x轴,并将该日期的正,负和中性计数用作Y轴 我怎样才能做到这一点?
答案 0 :(得分:4)
我想用日期作为X轴和正数,负数和 在该特定日期中性,作为dc.js线图中的Y轴 - user3614894
如果您需要使用dc.js显示它,我会使用reduce,请参阅http://jsbin.com/fisawaqa/2/edit上的示例
var ndx = crossfilter(sentimentData);
var dateDimension = ndx.dimension(function (d) {
return d.date;
});
function reduceAdd(p, v) {
console.log(v);
++p.count;
p.positive += v.sentiment == "Positive" ? 1 : 0;
p.negative += v.sentiment == "Negative" ? 1 : 0;
p.neutral += v.sentiment == "Neutral" ? 1 : 0;
return p;
}
function reduceRemove(p, v) {
--p.count;
p.positive -= v.sentiment == "Positive" ? 1 : 0;
p.negative -= v.sentiment == "Negative" ? 1 : 0;
p.neutral -= v.sentiment == "Neutral" ? 1 : 0;
return p;
}
function reduceInitial() {
return {count: 0, positive: 0,negative:0,neutral:0};
}
var dateGroup = dateDimension.group().reduce(reduceAdd,reduceRemove,reduceInitial);
答案 1 :(得分:2)
按日期和情绪创建两个维度,按日期过滤,然后按情绪分组:
"use strict";
var data = [
{ date: "25-1-2012",
sentiment: "Positive",
year: 2012
},
{ date: "25-1-2012",
sentiment: "Negative",
year: 2012
},
{ date: "25-1-2012",
sentiment: "Positive",
year: 2012
},
{ date: "26-1-2012",
sentiment: "Positive",
year: 2012
},
{ date: "27-1-2012",
sentiment: "Negative",
year: 2012
}
];
var ndx = crossfilter(data);
var dateDim = ndx.dimension(function(d) {return d.date;});
dateDim.filterExact("25-1-2012");
var sentimentDim = ndx.dimension(function(d) {return d.sentiment;});
var sentimentGroup = sentimentDim.group().reduceCount();
console.log(sentimentGroup.top(Infinity));