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数据吗?或者我是否需要先将其强制转换为常规数组?
答案 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, []);