javascript - 如何在 D3 中使用交叉过滤器进行过滤

标签 javascript d3.js crossfilter

我正在尝试使用 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/

相关文章:

javascript - 如何静默结束交互?

javascript - 鼠标事件

javascript - d3 SVG 文本元素背景颜色与 getBBox() 顺序错误

javascript - 如何使用 DC.js 使用以下数据类型渲染多折线图 - JAVASCRIPT (DC.js)

javascript - JQuery 在悬停时向后旋转两侧(3D)

JavaScript setDate 返回错误的日期

javascript - 在同一个圆环图中使用不同的数据

javascript - 如何在 d3js 运动图表中的气泡旁边显示名称

javascript - dc.js 如何在 renderAll 之后更新 yscale

javascript - dc.js - 基于单个 csv 文件中单独类别的多个折线图