DC.js在折线图中堆叠不显示

我无法在折线图中渲染堆栈。

我有一个减少计算三个平均值。 我可以在.group中显示这些Avg中的一个,但它不能用于堆栈

timeConstChart
.dimension(datesDim)
.group(evalConsReduced,"Buena", function(d){return d.value.buenaAvg}) // works
.stack(evalConsReduced,"Regular",function (d) {return d.value.regularAvg}) // <- Doesn't work
.stack(evalConsReduced,"Mala",function (d) {return d.value.malaAvg}) // <- Doesn't work neither
.x(d3.time.scale().domain([minDate,maxDate]))
.y(d3.time.scale().domain([0,100]));

奇怪的部分是,如果我忽略组的“返回d.value.buenaAvg”,我可以从d.value.regularAvg

的jsfiddle

注意:这是我第一次使用crossfilter,但我已经可以告诉我的reduce函数不是最优的,并且可以改进。 任何方向在这里也将不胜感激。


改进这些减少功能可能是可能的,但它们是正确的基本想法。 您必须以某种方式计算每个值,然后计算每个值的平均值。

也许有聪明的方法来编写更少的代码,但你所做的事情是清楚的。

它看起来像你错误的地方是使用toFixed - 这会返回一个字符串,并且当你尝试聚合字符串时会发生很多麻烦。

例如,

0.3 + 0.1 === 0.4

'0.3' + '0.1' === '0.30.1'

我认为堆栈中也发生过相同的事情,但是某处dc.js会执行完整性检查并抛出NaN。

这里是你的小提琴与toFixed删除的叉子。

正如预期的那样,这三个堆栈在1处加起一条绿线。(我已经添加了.clipPadding(2)因为否则顶线可能会被剪切,使得很难看清楚。)

链接地址: http://www.djcxy.com/p/32743.html

上一篇: DC.js stack in line chart not showing

下一篇: Using DC.js datatable to create a table with aggregated data by year