Crossfilter.js:使用嵌套属性创建维度/组

时间:2014-11-11 01:51:09

标签: javascript json d3.js nested crossfilter

我正在使用crossfilter.js库进行可视化,我对如何从我的数据集中的嵌套属性创建一些维度感到有些困惑。例如,数据集的每个实例都有多个与之关联的日期,从而产生如下所示的数据结构:

[ { name: 'instance_name',
  dates: ['2014-11-11', '2013-07-06', '2011-02-04'],
  category: 'category 1' },
{ name: 'instance_name2',
  dates: ['2012-01-01', '2013-03-07'],
  category: 'category 2' } ]

我希望能够创建允许根据日期进行过滤的维度,类别和维度是使用crossfilter执行此操作的简单方法。但是,我不确定如何解析日期。我首先尝试使用以下内容创建日期维度:

var cf = crossfilter(data);
var dateDim = cf.dimension(function(d) { return d.dates; });

然后尝试使用.map()方法将日期存储为变量,如下所示:

var date = dateDim.top(Infinity).map(function(d) { return d.dates; });

上面只检索日期并将它们存储为变量,但是(a)这只是一个日期数组,每个日期都是一个字符串,而且(b)这并不能让我更接近将dateDim链接到我想要为可视化创建的其他交叉滤波器维度。任何帮助将不胜感激。谢谢你的阅读。

1 个答案:

答案 0 :(得分:0)

我的建议是在将结构加载到Crossfilter之前展平你的结构。因此,您的第一条记录将成为3条记录(每个日期为1条记录),您的第2条记录将成为2条记录。然后,您可以解析日期并将其视为Crossfilter中的维度而不会有太多麻烦。缺点是计算因为一个问题,但可以通过自定义分组功能进行管理。