怎样才可以有一个自定义的减少在我crossfilter组功能?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎样才可以有一个自定义的减少在我crossfilter组功能?相关的知识,希望对你有一定的参考价值。
我在我的数据集的数字字段。我做的和仪表板经过一年,年龄对这个字段进行筛选,依此类推。事实是,这个字段是以上人口的样品的比例,因此,当我创建一个var ratesPerAge = ageDim.group().reduceSum(function(d) return +d.suicidesPercentage);
每个记录的速率总结了自我使用.reduceSum()
。
我的目标是有类似平均每一次具有平均速率在过滤行。
我试图实现我想要使用此功能,我在另一个线程找到了解决办法。
var col1DimTotal = col1Dim.group().reduce(reduceAdd, reduceRemove,
reduceInitial);
function reduceAdd(p, v)
++p.count;
p.total += v.value;
return p;
function reduceRemove(p, v)
--p.count;
p.total -= v.value;
return p;
function reduceInitial()
return count: 0, total: 0;
然而,这并没有达到我想要的东西。
这是我的速度dimension
与另一个维度分组:
var ratesDim = ndx.dimension(function(d) return
d.suicidesPercentage;);
var ageDim = ndx.dimension(function(d) return d.age);
var ratesPerAge = ageDim.group().reduceSum(function(d) return
+d.suicidesPercentage);
我想通过我选择行的平均速率进行过滤。
答案
I think I solved this and I managed to achieve what I wanted:
.
.
.
var yearDim = ndx.dimension(function(d) return new Date(d.year); );
function reduceAddAvg(p,v)
++p.count
p.sum += v.suicidesPercentage;
p.avg = p.sum/p.count;
return p;
function reduceRemoveAvg(p,v)
--p.count
p.sum -= v.suicidesPercentage;
p.avg = p.count ? p.sum/p.count : 0;
return p;
function reduceInitAvg()
return count:0, sum:0, avg:0;
var ratesPerYear = yearDim.group().reduce(reduceAddAvg, reduceRemoveAvg, reduceInitAvg);
yearChart // line chart
.width(660)
.height(400)
.dimension(yearDim)
.group(ratesPerYear).valueAccessor(function (d)
return d.value.avg;
) // this is the reference of the AVG
.x(d3.scaleTime().domain([new Date("January 1, 1987 00:00"), new
Date("January 4, 2015 00:00:00")]))
.elasticY(true)
.controlsUseVisibility(true)
.yAxisLabel("Rates over 100k people")
.xAxisLabel("Year")
.centerBar(true);
以上是关于怎样才可以有一个自定义的减少在我crossfilter组功能?的主要内容,如果未能解决你的问题,请参考以下文章