- DC.js 教程
- DC.js - 首頁
- DC.js - 簡介
- DC.js - 安裝
- DC.js - 概念
- Crossfilter 簡介
- D3.js 簡介
- DC.js - Mixin
- DC.js - baseMixin
- DC.js - capMixin
- DC.js - colorMixin
- DC.js - marginMixin
- DC.js - coordinateGridMixin
- DC.js - 餅圖
- DC.js - 線圖
- DC.js - 條形圖
- DC.js - 組合圖
- DC.js - 系列圖
- DC.js - 散點圖
- DC.js - 氣泡圖
- DC.js - 熱力圖
- DC.js - 資料計數
- DC.js - 資料表
- DC.js - 資料網格
- DC.js - 圖例
- DC.js - 儀表板工作示例
- DC.js 有用資源
- DC.js - 快速指南
- DC.js - 有用資源
- DC.js - 討論
DC.js - Crossfilter 簡介
Crossfilter 是一個多維資料集。它支援與包含百萬條甚至更多記錄的資料集進行極快的互動。
基本概念
Crossfilter 在 crossfilter 名稱空間下定義。它使用語義版本控制。考慮一下下面定義的,載入了水果集合的 crossfilter 物件:
var fruits = crossfilter ([
{ name: “Apple”, type: “fruit”, count: 20 },
{ name: “Orange”, type: "fruit”, count: 10 },
{ name: “Grapes”, type: “fruit”, count: 50 },
{ name: “Mango”, type: “fruit”, count: 40 }
]);
如果我們需要計算組中的總記錄數,可以使用以下函式:
var count = fruits.groupAll().reduceCount().value();
如果我們想按特定型別過濾:
var filtering = fruits.dimension(function(d) { return d.type; });
filtering.filter(“Grapes”)
類似地,我們可以使用 Crossfilter 進行分組。為此,可以使用以下函式:
var grouping = filtering.group().reduceCount(); var first = grouping.top(2);
因此,Crossfilter 的構建速度非常快。如果要在應用過濾器時重新計算組,它會增量計算。Crossfilter 維度非常昂貴。
Crossfilter API
讓我們詳細瞭解一下值得注意的 Crossfilter API。
crossfilter([records]) - 用於構造新的 crossfilter。如果指定了記錄,則會同時新增指定的記錄。記錄可以是任何 JavaScript 物件或原語的陣列。
crossfilter.add(records) - 將指定的記錄新增到 crossfilter。
crossfilter.remove() - 從 crossfilter 中刪除與當前過濾器匹配的所有記錄。
crossfilter.size() - 返回 crossfilter 中的記錄數。
crossfilter.groupAll() - 用於對所有記錄進行分組並簡化為單個值的函式。
crossfilter.dimension(value) - 用於使用指定的 value 訪問器函式構造新的維度。
dimension.filter(value) - 用於過濾維度匹配值的記錄,並返回維度。
dimension.filterRange(range) - 過濾維度值為大於等於 range[0] 且小於 range[1] 的記錄。
dimension.filterAll() - 清除此維度上的任何過濾器。
dimension.top(k) - 用於返回一個新陣列,其中包含根據此維度的自然順序排列的前 k 條記錄。
dimension.bottom(k) - 用於返回一個新陣列,其中包含根據此維度的自然順序排列的最後 k 條記錄。
dimension.dispose() - 用於從 crossfilter 中刪除維度。
在下一章中,我們將簡要了解 D3.js。