d3.histogram - 从Crossfilter重新收集数据

时间:2017-05-04 20:41:51

标签: javascript d3.js histogram crossfilter

d3的histogram布局需要采用[6, 9, 4, 2, 0, 6, 9]等格式的数据,并根据您的域名,刻度等创建整洁的 bins

Crossfilter将数据分组直方图结构(或多或少),结构如下:

[
  { key: 0, value: 1 },
  { key: 1, value: 8 },
  { key: 3, value: 7 },
]

请注意,密钥2没有对象。容器的数量只是数据中不同值的数量。同时d3.histogram().threshholds(...)允许我控制我得到的箱数。

我希望可视化Crossfilter数据,并利用d3.histogram()制作方便分档的能力。我可以使用一些访问函数来解析Crossfilter数据吗?或者我是否需要先将其强制转换为常规数组?

1 个答案:

答案 0 :(得分:0)

我还在探索这个问题,但这里有一个reduce函数,它会将Crossfilter组数据展平/展开为d3 histogram布局的数组:

// reduce callback function
function flattenGroupData(flattened, currentRecord) {
  let value = currentRecord.key;
  let quantity = currentRecord.value;
  let expandedArray = Array(quantity).fill(value);
  return flattened.concat(expandedArray);
}

let groupData = myCrossfilterGroup.all();

let dataForD3 = groupData.reduce(flattenGroupData, []);