2015-02-06 62 views
0

这里是一个小提琴,以帮助证明我想怎样做: http://jsfiddle.net/m4x7o5of/如何使用Crossfilter和dc.js创建x轴范围组?

我有一组记录,每一个浮点值。例如:

var records = [{name: 'record1', value: 1.34563}, ..., {name: 'record5000', value: 0.62974}]; 

我想创建在dc.js一个条形图绘出在范围上水桶x轴中的记录,例如具有0和0.5,y之间值的记录的x数 - .5和1之间的记录数,1和1.5之间的记录数,等等。

我正在使用序数标度,以便我可以将记录集分成5秒,但我无法弄清楚如何获得像我所描述的范围组合在一起的记录。在链接的小提琴中,只有具有与绘制的序数匹配的值的记录才会显示。

是否可以将这样的记录分组?任何帮助,将不胜感激。

回答

2

dimension.group带有一个函数,您可以使用该函数派生组密钥。因此,dimension.group(function(d) { return Math.floor(d); });将为您提供0,1,2,3,4,5,6,7和8组密钥用于您的数据集。您只需构建一个函数,根据数据集中的值返回所需的值。那是你想要做的吗?

+0

很酷,所以用这个分组函数我得到了这样的东西:http://jsfiddle.net/m4x7o5of/1/。这里唯一的问题是,高于8的值被切断。这接近我的最终目标。不知道如何得到像这样的分组系统,其中min和0的值都是最大的值。所以如果我把x轴分成5或6,我得到的x范围为0,.2,.4,.6,.8,1,并且能够看到数值介于.4和.4之间的记录数。 6。 – formalreasoning 2015-02-06 20:57:43

+0

我能够在你的答案之上构建更多,并提出了这个问题:http://jsfiddle.net/mkdjy0up/。第一个图形将valueOne范围介于0和1之间的维度中的记录进行分组,第二个组记录介于0和10之间的valueTwo。我现在注意到的问题是,单击一个图形中的条形图会导致其他图消失。 – formalreasoning 2015-02-06 21:54:14

+0

我相信它是基于新的组密钥过滤维度,这是不会正常工作。您需要添加过滤器处理程序(https://github.com/dc-js/dc.js/blob/master/web/docs/api-latest.md#filterhandlerfunction)并将范围过滤器应用于维度在将组密钥转换回原来在数据集上覆盖的范围之后。 – 2015-02-07 22:14:24