DC.js 未显示折线图中的堆栈
DC.js stack in line chart not showing
我在折线图中呈现堆栈时遇到问题。
我有一个计算三个平均值的减少。我可以在 .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]));
奇怪的是,如果我忽略组的 "return d.value.buenaAvg",我可以从 d.value.regularAvg
得到结果
注意:这是我第一次使用 crossfilter,但我已经知道我的 reduce 函数不是最优的,它们可以改进。此处的任何指示也将不胜感激。
可能可以改进那些 reduce 函数,但它们是正确的基本思想。您将不得不以某种方式计算每个值,并计算每个值的平均值。
也许有一些聪明的方法可以减少代码的编写,但是您在做什么很清楚。
看起来你出错的地方是 toFixed
- this returns a string,当你尝试时可能会发生很多麻烦聚合字符串。
例如,
0.3 + 0.1 === 0.4
但是
'0.3' + '0.1' === '0.30.1'
我认为您的堆栈中也发生了同样的事情,但是某处 dc.js 进行了健全性检查并丢弃了 NaN。
这里是a fork of your fiddle with toFixed
removed.
正如预期的那样,三个堆栈在 1 处加起来形成一条绿线。(我添加了 .clipPadding(2)
,否则顶线可能会被剪掉,很难看清。)
我在折线图中呈现堆栈时遇到问题。
我有一个计算三个平均值的减少。我可以在 .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]));
奇怪的是,如果我忽略组的 "return d.value.buenaAvg",我可以从 d.value.regularAvg
得到结果注意:这是我第一次使用 crossfilter,但我已经知道我的 reduce 函数不是最优的,它们可以改进。此处的任何指示也将不胜感激。
可能可以改进那些 reduce 函数,但它们是正确的基本思想。您将不得不以某种方式计算每个值,并计算每个值的平均值。
也许有一些聪明的方法可以减少代码的编写,但是您在做什么很清楚。
看起来你出错的地方是 toFixed
- this returns a string,当你尝试时可能会发生很多麻烦聚合字符串。
例如,
0.3 + 0.1 === 0.4
但是
'0.3' + '0.1' === '0.30.1'
我认为您的堆栈中也发生了同样的事情,但是某处 dc.js 进行了健全性检查并丢弃了 NaN。
这里是a fork of your fiddle with toFixed
removed.
正如预期的那样,三个堆栈在 1 处加起来形成一条绿线。(我添加了 .clipPadding(2)
,否则顶线可能会被剪掉,很难看清。)