2015-04-28 1 views
2

У меня есть список событий, и хочет, чтобы показать, кто главные участники (те, которые приходят чаще)Как отобразить график сверху n элементов?

Что я сделал является rowChart

var dim = ndx.dimension (function(d) { 
    if (!d.guest) { 
     return "Not mentioned"; 
    } 
    return d.guest; 
}); 

var group = dim.group().reduceSum(function(d) { return 1; }); 
var graph = dc.rowChart (".topvisitor") 
    .margins({top: 0, right: 10, bottom: 20, left: 10}) 
    .height(300) 
    .width(200) 
    .cap(10) 
    .x(d3.scale.ordinal()) 
    .elasticX(true) 
.ordering(function(d){return -d.value}) 
    .dimension(dim) 
    .group(group); 

Этого вида работ, но есть большой «другой», который я бы хотел удалить. Я злоупотребляю rowChart для создания графика topN?

ответ

2

Таким образом, путь, который я следовал должен сначала фильтровать данные (путем создания поддельной группы, которая имеет всю новую() функцию, которая возвращает верхнюю (п) вещественной группы):

уага группы = тусклый .group(). reduceSum (function (d) {return 1;});

var filteredGroup = (function (source_group) {return { 
    all:function() { 
    return source_group.top(10).filter(function(d) { 
     return d.key != "Not mentioned"; 
    }); 
    } 
};})(group); 

и для графа, использовать эту группу

.group (filteredGroup);

Я думаю, что это делает трюк, несмотря на утверждение Гордона, все еще чувствует себя немного хака, но это делает работу (шапка + фильтр некоторых данных)

вы должны снять колпачок, или реализовать верхнюю функцию (такой же, как все, в данном случае)

в качестве примечания: rowChart, кажется, один из диаграммы, где вы можете переопределить функцию данных, так:

.data(function (group) { 
     return group.top(10); 
}) 

будет работать тоже (но не фильтровать «Не упомянутые» предметы

+0

Это кажется мне разумным. На мой взгляд, диаграммы должны отображать данные, которые они заданы, и пользователь должен указать серию преобразований для получения правильных данных из группы. Это просто вопрос инкапсуляции этих преобразований, поэтому они не уродливы писать. – Gordon