我的数据集是like的json数组:
var data = [ { company: "A", date_round_1: "21/05/2002", round_1: 5, date_round_2: "21/05/2004", round_2: 20 },
...
{ company: "Z", date_round_1: "16/01/2004", round_1: 10, date_round_2: "20/12/2006", round_2: 45 }]
并且我希望将“ round_1”和“ round_2”时间序列显示为堆叠的折线图。
基线看起来像这样:
var fundsChart = dc.lineChart("#fundsChart");
var ndx = crossfilter(data);
var all = ndx.groupAll();
var date_1 = ndx.dimension(function(d){
return d3.time.year(d.date_round_1);
})
fundsChart
.renderArea(true)
.renderHorizontalGridLines(true)
.width(400)
.height(360)
.dimension(date_1)
.group(date_1.group().reduceSum(function(d) { return +d.round_1 }))
.x(d3.time.scale().domain([new Date(2000, 0, 1), new Date(2015, 0, 1)]))
我曾尝试使用stack方法添加系列,但是问题出在一个事实上,即只能将单个维度作为lineChart的参数传递。
您能想到在仍使用直流图的同时显示两个系列的周转时间吗?
您要在此图表上进行过滤吗?如果不是,只需在date_2维度上创建一个不同的组,然后在堆栈中使用该组即可。应该管用。
如果要进行过滤,我认为您必须稍稍更改数据模型。您将希望切换为每轮1条记录,因此在这种情况下,您现在每1条记录将有2条记录。应该有1个日期属性(该回合的日期),一个数量属性(当前结构中round_x的内容)和一个“回合”属性(例如,将为“ 1”或“ 2”) 。
然后,您需要创建一个日期维度,并在该维度上创建多个组。该组将具有一个reduceSum函数,如下所示:
var round1Group = dateDim.group().reduceSum(function(d) {
return d.round === '1' ? d.amount : 0;
});
因此,这里发生的是,我们有一个仅汇总第1轮的值的组。您将为第2轮创建类似的组,依此类推。然后将这些组堆叠在dc.js图表中。
希望有帮助!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句