При применении фильтра к группе изменения в фильтрации не отражаются в моей группе, созданной с помощью карты. Я хочу, чтобы изменения фильтровать вниз - илиУменьшение не отражает фильтрацию размера
Мои данные настройки обычно:
var rides = crossfilter(data),
all = rides.groupAll(),
gender = rides.dimension(function(d) { return d.gender; }),
gendersAvg = gender.group().reduce(reduceAddGender, reduceRemoveGender, reduceInitialGender).all(),
Моя карта уменьшить функции устанавливаются следующим образом:
function reduceAddGender(p, v) {
p.count++;
return p;
}
function reduceRemoveGender(p, v) {
p.count--;
return p;
}
function reduceInitialGender() {
return {
count: 0
};
}
Я выполняю свою фильтрацию как это:
gender.filter(function(d){ return d === parseInt(z[1]) || d === parseInt(z[0]) });
Все мои измерения отражают фильтр, кроме одного. Когда я ищу значения GendersAvg
постфильтрации, эти значения не отражают фильтры.
Идеи? Вызов среднего значения во второй раз также не меняет его значений.
Значения групп Crossfilter рассчитываются на основе фильтров по размерам * other *, чем размер, на котором определена группа. Фильтры в собственном измерении группы игнорируются. См. Https://github.com/square/crossfilter/wiki/API-Reference#dimension_group –
Спасибо. Есть ли решение? –
Зависит от того, что вы хотите сделать. Вы можете создать второе измерение и сделать свой фильтр на этом, тогда ваше исходное измерение будет отфильтровано, но если размеры идентичны, обычно нет причин для этого, потому что все, что вы делаете, - это выбор одного или нескольких из групп. В этом случае вы можете просто найти нужную группу напрямую с помощью gendersAvg.all(). Filter (function (d) {return d.key === parseInt (z [1]) || d.key == = parseInt (z [0])}); –