我正在尝试使用 crossfilter
过滤我的数据集,但没有成功(完整结果在我的 filterType
var 中返回)。我的代码似乎与网上类似的示例内联,但我一定遗漏了一些明显的东西。这些数据是关于我新生儿的 sleep 模式的,因此这可能是导致我死亡的原因。
谁能告诉我我的疏忽吗?
//Load sample sleep data
var dataset = [
{day: 1, type: 'day', totalSleep: 8},
{day: 1, type: 'night', totalSleep: 7},
{day: 2, type: 'day',totalSleep: 8},
{day: 2, type: 'night', totalSleep: 7}
];
//Crossfilter data
var cf = crossfilter(dataset);
//Create type dimension
var typeDim = cf.dimension(function(d) {return d.type});
//Reduce type by sleep
var sleepByType = typeDim.group().reduceSum(item => item.totalSleep);
//Display result
var allTypes = sleepByType.all();
console.log('All types:');
console.log(allTypes);
//Filter on type
typeDim.filter('day');
//Filtered result
var filterTypes = sleepByType.all();
console.log('Filtered types:');
console.log(filterTypes);
最佳答案
根据设计,a group does not observe its own dimension's filters .
这是因为您通常不希望图表过滤掉自己的数据。例如,除了极少数情况外,如果您刷折线图 x 轴的某个区域,您不希望刷子外部的线条降至零。
如果您在同一字段上创建另一个维度并对其进行过滤,您将看到对 sleepByType
的效果:
var typeDim2 = cf.dimension(function(d) {return d.type});
typeDim2.filter('day');
关于javascript - 如何在 D3 中使用交叉过滤器进行过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58498250/