Нормированная столбчатая диаграмма представляет собой вариант составной (stacked) столбчатой визуализации, в которой абсолютные значения заменяются долями. Каждый столбец отображает распределение категорий внутри фиксированного суммарного масштаба, равного 100%. Основной смысл заключается в сравнении относительных вкладов, а не абсолютных величин.
В контексте Vega и Vega-Lite такой тип диаграммы реализуется через механизм нормализации стеков, встроенный в систему агрегации и компоновки геометрических примитивов.
Нормированная столбчатая диаграмма базируется на преобразовании исходных данных:
Формально для значения ( x_{ij} ):
[ x’*{ij} = ]
где:
В Vega-Lite нормированная столбчатая диаграмма строится через комбинацию следующих элементов:
mark: "bar"encoding.x — категориальная осьencoding.y — количественная осьstack: "normalize" — ключевой параметр
нормализации{
"$schema": "https://vega.github.io/schema/vega-lite/v5.json",
"data": {
"values": [
{"category": "A", "group": "X", "value": 10},
{"category": "B", "group": "X", "value": 20},
{"category": "C", "group": "X", "value": 30},
{"category": "A", "group": "Y", "value": 5},
{"category": "B", "group": "Y", "value": 15},
{"category": "C", "group": "Y", "value": 80}
]
},
"mark": "bar",
"encoding": {
"x": {
"field": "group",
"type": "nominal"
},
"y": {
"field": "value",
"type": "quantitative",
"stack": "normalize"
},
"color": {
"field": "category",
"type": "nominal"
}
}
}
Параметр:
"stack": "normalize"
изменяет поведение стековой агрегации следующим образом:
Внутренне Vega-Lite преобразует данные в последовательность:
Обычная стековая диаграмма:
Нормированная стековая диаграмма:
При использовании нормирования Vega-Lite автоматически корректирует шкалу:
Пример форматирования процентов:
"y": {
"field": "value",
"type": "quantitative",
"stack": "normalize",
"axis": {
"format": "%"
}
}
Для более контролируемых сценариев применяется слой
transform, где данные агрегируются до визуализации.
{
"transform": [
{
"stack": "value",
"groupby": ["group"],
"as": ["y0", "y1"],
"normalize": true
}
]
}
Такая форма используется в Vega (низкоуровневом языке) и предоставляет более детальную настройку по сравнению с Vega-Lite.
Нормированные столбцы часто применяются для анализа многоклассовых распределений.
Типичная структура данных:
Пример:
[
{"year": 2020, "type": "A", "value": 40},
{"year": 2020, "type": "B", "value": 60},
{"year": 2021, "type": "A", "value": 30},
{"year": 2021, "type": "B", "value": 70}
]
{
"$schema": "https://vega.github.io/schema/vega-lite/v5.json",
"data": {
"values": [
{"year": 2020, "type": "A", "value": 40},
{"year": 2020, "type": "B", "value": 60},
{"year": 2021, "type": "A", "value": 30},
{"year": 2021, "type": "B", "value": 70}
]
},
"mark": "bar",
"encoding": {
"x": {
"field": "year",
"type": "ordinal"
},
"y": {
"field": "value",
"type": "quantitative",
"stack": "normalize"
},
"color": {
"field": "type",
"type": "nominal"
}
}
}
Цвет в нормированной столбчатой диаграмме выполняет роль:
Рекомендуется:
В нормированных диаграммах важно учитывать:
Поведение:
impute.Сортировка влияет на читаемость структуры:
Пример:
"x": {
"field": "group",
"type": "nominal",
"sort": "-y"
}
Нормированная диаграмма наиболее эффективна при:
Типовые сценарии:
В Vega нормированная стековая логика реализуется через вычисление масштаба в фазе dataflow:
Нормированная столбчатая диаграмма имеет ряд ограничений:
Расширенные конфигурации включают:
facet) для разбиения по
измерениям;transform для предрасчёта процентов.Пример tooltip:
"tooltip": [
{"field": "category"},
{"field": "value"}
]
Визуальная интерпретация нормированных столбцов опирается на:
Ключевой эффект — переход от анализа величин к анализу состава.