Группируйте, группируйте, комбинируйте и агрегируйте многомерные наборы данных для интерактивной визуальной аналитики. Определите простые (меньшие размерности) сечения ваших данных, называемые фильтрами. Фильтрует данные по разделам (группам) и может выполнять агрегирование (суммы, средние значения, стандартные отклонения и т. д.). Результат возвращается в виде простого массива, который вы можете построить или проанализировать (см. также другие проекты SPOT). Все фильтры связаны и обновляются автоматически.
Используя единый API, он может работать полностью на стороне клиента через перекрестную фильтрацию или использовать базу данных PostgreSQL с помощью spot-server
.
git clone https://github.com/NLeSC/spot-framework.git && cd spot
npm install
// get a new Spot instance
var Spot = require ( './src/me' ) ;
var spot = new Spot ( ) ;
// add a dataset
var dataset = spot . datasets . add ( {
name : 'My data'
} ) ;
// add some data to the dataset
dataset . crossfilter . add ( [
{ firstName : 'John' , lastName : 'Smith' , age : 35 } ,
{ firstName : 'Mary' , lastName : 'Smith' , age : 49 } ,
{ firstName : 'Little' , lastName : 'Smith' , age : 8 } ,
{ firstName : 'Dee' , lastName : 'Jones' , age : 5 } ,
{ firstName : 'Doo' , lastName : 'Jones' , age : 9 }
] ) ;
// Have SPOT scan the dataset:
// 1. it auto-detects 'firstName', 'lastName', and 'age' attributes
// 2. it creates the corresponding Facets
dataset . scan ( ) ;
// make the dataset active
spot . toggleDataset ( dataset ) ;
var dataview = spot . dataview ;
// add a filter
var filter = dataview . filters . add ( {
title : 'filter one'
} ) ;
// ... that partitions the data on 'lastName'
filter . partitions . add ( [
{ facetName : 'lastName' , rank : 1 }
] ) ;
filter . partitions . forEach ( function ( partition ) {
partition . setGroups ( ) ;
} ) ;
// ... and that takes the average over the 'age'
filter . aggregates . add ( [
{ facetName : 'age' , rank : 1 , operation : 'avg' }
] ) ;
// initialize the filter
filter . initDataFilter ( ) ;
// listen to data
filter . on ( 'newData' , function ( ) {
console . log ( 'data: ' , filter . data ) ;
} ) ;
dataview . getData ( ) ;
Документацию по споту можно найти здесь.
Джиск Аттема, Центр электронных наук Нидерландов