Crossfilter.js:创建具有嵌套属性的维度/组

Crossfilter.js: Creating Dimensions/Groups With Nested Attributes

本文关键字:属性 嵌套 js 创建 Crossfilter      更新时间:2023-09-26

我正在使用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' } ]

我希望能够创建允许基于日期和类别进行过滤的维度。维度是使用交叉过滤器进行过滤的一种简单方法。然而,我不知道如何解析日期。我尝试过首先使用以下内容创建日期维度:

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

然后尝试使用CCD_ 1方法将日期仅存储为变量,如

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

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

我的建议是在将结构加载到Crossfilter之前先将其压平。因此,你的第一个记录将变成3个记录(每个日期1个),而你的第二个记录将成为2个记录。然后,您可以解析日期,并将它们视为Crossfilter中的维度,而不会遇到太多麻烦。缺点是计数是一个问题,但使用自定义分组函数是可以管理的。