2016-08-30 10 views
0

У меня есть следующий набор данных.Клавиши группировки DCjs-Crossfilter на основе значений

[{..... att1: a, hits: 2}, 
{..... att1: a, hits: 2}, 
{..... att1: a, hits: 3}, 
{..... att1: b, hits: 2}, 
{..... att1: b, hits: 2}, 
{..... att1: c, hits: 9}, 
] 

Я хочу создать гистограмму, где значения х будут диапазоны значений «0-5», «5-10», '10 +»и у будут количеством ключей, которые попадают в этом диапазоне. то есть. ('0-5', 1), ('5-10', 2), ('10 + ', 0)

ответ

1

Создайте измерение, которое преобразует ваши данные в набор порядковых значений, соответствующих вашим ковши. Тогда группа по этой размерности. Ваша группа будет подсчитывать количество записей, которые попадают в каждое ведро.

var data = [{att1: 'a', hits: 2}, 
    {att1: 'a', hits: 2}, 
    {att1: 'a', hits: 3}, 
    {att1: 'b', hits: 2}, 
    {att1: 'b', hits: 2}, 
    {att1: 'c', hits: 9}, 
]; 
var cf = crossfilter(data); 
var dim = cf.dimension(function(d) { 
    if(d.hits <= 5) return '0-5'; 
    if(d.hits <= 10) return '5-10'; 
    return '10+'; 
}); 
var grp = dim.group(); 
console.log(grp.all()); 

Рабочий пример (проверьте консоль): https://jsfiddle.net/esjewett/u10h4xsu/2/

Тогда вы можете создать свой dc.js гистограмму, основанную на этом.

var barChart = dc.barChart("#bar"); 

barChart.dimension(dim) 
    .group(grp) 
    .x(d3.scale.ordinal().domain(['0-5','5-10','10+'])) 
    .xUnits(dc.units.ordinal); 

dc.renderAll(); 

Пример с гистограммой: https://jsfiddle.net/esjewett/u10h4xsu/4/

+0

это то, что я сделал. Но если вы видите, что результаты ошибочны. Я хочу группировать по итоговым хитам, а не по хитам, как если бы вы увидели, что общее количество попаданий данных для 'a = 5, b = 4, c = 9', поэтому I ожидаемые значения шкалы Y -' (0-5, 1) , (5-10, 2), (10+, 0) '. – bashhike

+1

Это будет проблемой. Вы можете, конечно, сделать что-то подобное с помощью поддельных групп, но что бы это значит, чтобы фильтровать на этой диаграмме? Если вы просто хотите отображать и не фильтровать, тогда создайте поддельную группу: https://github.com/dc-js/dc.js/wiki/FAQ#combine-groups –

+0

Спасибо за указатель! – bashhike