Я пытаюсь выполнить операцию группирования по одной из осей тепловой карты и пытаюсь сохранить максимальное значение для установки цвета в этой ячейке.
Рассмотрим следующий пример
{
"data": {"name": "my_data"},
"mark": "rect",
"encoding": {
"color": {
"type": "quantitative",
"field": "z"
},
"tooltip": [{"type": "quantitative", "field": "z"},
{"type": "ordinal", "field": "y"},
{"type": "ordinal", "field": "x"}],
"x": {
"type": "ordinal",
"field": "x"
},
"y": {
"type": "ordinal",
"field": "y"
}
},
"$schema": "https://vega.github.io/schema/vega-lite/v4.8.1.json",
"datasets": {
"my_data": [
{"x": 0, "y": 0, "z": 0},
{"x": 0, "y": 1, "z": 0},
{"x": 1, "y": 0, "z": 0},
{"x": 1, "y": 1, "z": 1},
{"x": 2, "y": 0, "z": 0},
{"x": 2, "y": 1, "z": 0},
{"x": 3, "y": 0, "z": 0},
{"x": 3, "y": 1, "z": 0},
{"x": 4, "y": 0, "z": 0},
{"x": 4, "y": 1, "z": 0},
{"x": 5, "y": 0, "z": 0},
{"x": 5, "y": 1, "z": 0},
{"x": 6, "y": 0, "z": 0},
{"x": 6, "y": 1, "z": 0}]
}
}
что показывает что-то вроде:
Теперь я пытаюсь агрегировать ось x, добавляя {"color": {"aggregate": "max"}}
и {"x": {"bin": {"step": 2}}
, и получаю следующее:
Теперь для других значений биннинга (например, шаг: 3) горячая точка исчезает:
Что я ошибаюсь?
РЕДАКТИРОВАТЬ: Кроме того, установка агрегатора на mean
по-прежнему оставляет мне те же значения (вместо, по крайней мере, отображения 0,5 в первом случае), а count
всегда возвращает 1.
EDIT2: хотя решение @ jakevdp работало для приведенного выше примера, я все еще вижу ту же проблему, когда значение 1-hot установлено на границах корзины, например, с помощью:
"my_data": [
{"x": 0, "y": 0, "z": 1},
{"x": 0, "y": 1, "z": 0},
{"x": 1, "y": 0, "z": 0},
{"x": 1, "y": 1, "z": 0},
{"x": 2, "y": 0, "z": 0},
{"x": 2, "y": 1, "z": 0},
{"x": 3, "y": 0, "z": 0},
{"x": 3, "y": 1, "z": 0},
{"x": 4, "y": 0, "z": 0},
{"x": 4, "y": 1, "z": 0},
{"x": 5, "y": 0, "z": 0},
{"x": 5, "y": 1, "z": 0},
{"x": 6, "y": 0, "z": 0},
{"x": 6, "y": 1, "z": 0}
]