Лучше оставить все меры в value
части группы кроссфильтров и оставить только index в key
.
* 1008. * Crossfilter будет группировать группы в соответствии с функциями групп и клавиш измерения. Ваш инстинкт был верен: вы должны иметь возможность использовать
d.name
, потому что вы хотите, чтобы в каждой строке данных был пузырь, а
d.name
- это уникальный ключ.
var houseDim = ndx.dimension(d=>d.name);
Вот один простой способ скопировать каждая строка в значении группы:
var houseGroup=houseDim.group().reduce(
(p, d) => ({...p, ...d, count: (d.count || 0) + 1}), // add
(p, d) => ({...p, count: p.count - 1}), // remove
() => {} // init
);
При добавлении строки будут скопированы данные из строки, добавлено поле с именем count
. Поскольку ключи уникальны, число будет равно 1 или 0, в зависимости от того, фильтруется или нет строка.
Теперь мы можем использовать описательные имена полей вместо индексации массивов в коде:
.keyAccessor(function (p) {
return p.value.flat_rate;
})
.valueAccessor(function (p) {
return p.value.building_rate;
})
// ...
.title(function (p) {
return p.key + "\n"
+ "Индекс квартиры: " + p.value.flat_rate + "\n"
+ "Индекс дома: " + p.value.building_rate + " \n"
+ "Район: " + p.value.district + "\n"
+ "Цена: " + p.value.price
})
Нам также необходимо визуально исключить кодирование, используя d.value.count
в некоторых средствах доступа. Мне нравится отправлять как радиус, так и непрозрачность на ноль, но оставление радиуса и использование только непрозрачности также имеет эффект затишья.
.radiusValueAccessor(function (p) {
console.log('radius', p)
return p.value.count * priceScale(p.value.price);
})
// .colors(colorScale)
// .colorAccessor(function(p) {return p.value.district})
.colorCalculator(p => p.value.count ? colorScale(p.value.district) : 'rgba(0,0,0,0)')
Пузырьковая диаграмма не отображает непрозрачность в своих опубликованных c api, но этот трюк colorCalculator
отправляет непрозрачность в ноль, когда count
равен 0, и вызывает обычное colorScale
для значения в противном случае.
Я также должен был указать на правильное значение d c. css URL для того, чтобы заставить работать поведение выбора.
<link rel="stylesheet" href="https://unpkg.com/dc/dist/style/dc.css">
Рабочая ветвь вашего кода