【问题标题】:How to make a general function to create crossfilter.js dimensions如何制作通用函数来创建 crossfilter.js 维度
【发布时间】:2016-03-29 12:57:29
【问题描述】:

我正在尝试创建一个通用的函数来创建 crossfilter.js 维度和组。到目前为止,我以这种方式根据数据的键名(列名)创建了一个特定的(以“工作日”列为例):

DataArray= crossfilter(Data);
dimName = DataArray.dimension(function (d) { return d.Weekday; });
groupName= dinName.group().reduce(reduceAdd, reduceRemove, reduceInit);

显然,这很有效,但是我想创建一个可以创建维度的通用函数,而不管列的名称是什么。我曾想过这样做:

var x = Data[0];
var keyNames= d3.keys(x);

dimName = DataArray.dimension(function (d) { return d.keyNames[0]; });
...

这不起作用,因为 'd.keyNames[0]' 显然是错误的。 如何将 keyNames 传递给函数 'd. '??

希望我解释清楚。

【问题讨论】:

  • 您要为每个键创建一个维度吗?如果不是,您想如何从输入数据中选择键?
  • 是的,我想为每个键创建一个维度。问题是我正在使用 Flask 构建一个 Web 应用程序,因此,以前,用户从 html FORM 中选择 25 个之间的 5 个变量,然后一个 python 函数根据用户选择的不同选项准备数据。数据准备好后,会以 .json 格式发送到 html 文件。这就是问题所在,我事先不知道,已经选择的那5个变量。

标签: javascript d3.js crossfilter


【解决方案1】:

替换

dimName = DataArray.dimension(function (d) { return d.Weekday; });

dimName = DataArray.dimension(function (d) { return d["column name"]; });

即使列名有空格,这也会起作用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-15
    • 1970-01-01
    • 1970-01-01
    • 2021-01-16
    • 1970-01-01
    • 2011-10-26
    • 2021-09-28
    相关资源
    最近更新 更多