В Vega-Lite и Vega визуализация типа area представляет собой расширение линейного графика, в котором область под линией заполняется цветом. Этот тип графика применяется для отображения накопленных значений, распределений во времени, сравнений вкладов категорий и анализа трендов, где важна не только форма линии, но и интегральная величина.
Area-график строится на двух ключевых измерениях:
Основное отличие от линейного графика заключается в том, что значение Y визуально интерпретируется как площадь:
В Vega-Lite это реализуется через mark:
{
"mark": "area",
"encoding": {
"x": { "field": "date", "type": "temporal" },
"y": { "field": "value", "type": "quantitative" }
}
}
Типичный набор данных для area-графика включает временную метку и числовое значение:
[
{ "date": "2024-01-01", "value": 30 },
{ "date": "2024-01-02", "value": 45 },
{ "date": "2024-01-03", "value": 28 }
]
При отображении Vega-Lite автоматически соединяет точки в порядке оси X и заполняет область между линией и нулевой базой.
Ключевой параметр — baseline, который по умолчанию равен 0.
Area-график может быть ориентирован как вертикально, так и горизонтально. Ориентация определяется типами осей:
{
"mark": "area",
"encoding": {
"x": { "field": "value", "type": "quantitative" },
"y": { "field": "date", "type": "temporal" }
}
}
Горизонтальная интерпретация часто используется для распределений и плотностей.
Area-графики почти всегда требуют управления заливкой:
{
"mark": {
"type": "area",
"color": "#4c78a8",
"opacity": 0.6
}
}
Оптимальная практика:
Одно из ключевых применений — накопленные области. В
Vega-Lite это включается через stack.
{
"mark": "area",
"encoding": {
"x": { "field": "date", "type": "temporal" },
"y": { "field": "value", "type": "quantitative", "stack": "zero" },
"color": { "field": "category", "type": "nominal" }
}
}
Режимы стэкинга:
"zero" — стандартное накопление от 0"normalize" — нормализация до 100%"center" — центрирование вокруг оси (streamgraph)Используется для анализа долей:
"y": { "field": "value", "type": "quantitative", "stack": "normalize" }
Каждая категория отображается как процент от общего объёма.
Эффект «плавающих» слоёв:
"y": { "field": "value", "type": "quantitative", "stack": "center" }
Такой формат применяется для визуализации потоков данных и временных распределений.
Vega-Lite позволяет управлять способом соединения точек через
параметр interpolate.
{
"mark": {
"type": "area",
"interpolate": "monotone"
}
}
Основные режимы:
linear — прямые сегментыmonotone — сглаженная кривая без пересеченийstep — ступенчатая функцияbasis — B-spline сглаживаниеcardinal — усиленное сглаживаниеВыбор интерполяции влияет на восприятие данных:
Часто area комбинируется с линией для повышения читаемости:
{
"layer": [
{
"mark": { "type": "area", "opacity": 0.3 }
},
{
"mark": { "type": "line", "color": "black" }
}
],
"encoding": {
"x": { "field": "date", "type": "temporal" },
"y": { "field": "value", "type": "quantitative" }
}
}
Такое наложение:
Area-графики чувствительны к отсутствующим данным.
Параметр defined позволяет контролировать разрывы:
{
"mark": {
"type": "area",
"defined": "datum.value !== null"
}
}
Поведение:
Vega-Lite автоматически строит шкалы, но area-графики требуют внимательной настройки:
"y": {
"field": "value",
"type": "quantitative",
"scale": { "type": "log" }
}
Используется при экспоненциальных данных.
"scale": {
"domain": [0, 100]
}
Позволяет фиксировать визуальную область.
Для нескольких рядов данных используется color
encoding:
{
"mark": "area",
"encoding": {
"x": { "field": "date", "type": "temporal" },
"y": { "field": "value", "type": "quantitative" },
"color": { "field": "series", "type": "nominal" }
}
}
Поведение зависит от stack:
При наложении нескольких area-слоёв критично управление opacity:
Дополнительно используется:
"blend": "multiply"
для усиления пересечений.
В Vega (не Lite) area строится через mark type "area" с
явными path-данными или transform-цепочками.
Пример концептуальной структуры:
{
"marks": [
{
"type": "area",
"from": { "data": "table" },
"encode": {
"enter": {
"x": { "scale": "x", "field": "date" },
"y": { "scale": "y", "field": "value0" },
"y2": { "scale": "y", "field": "value1" }
}
}
}
]
}
Здесь появляется возможность:
Area может использоваться для отображения интервалов:
{
"mark": "area",
"encoding": {
"x": { "field": "x", "type": "quantitative" },
"y": { "field": "lower", "type": "quantitative" },
"y2": { "field": "upper" }
}
}
Применение:
Добавление интерактивности:
{
"mark": "area",
"encoding": {
"tooltip": [
{ "field": "date", "type": "temporal" },
{ "field": "value", "type": "quantitative" }
]
}
}
При использовании в Vega View возможны:
Brush selection:
"selection": {
"brush": {
"type": "interval"
}
}
Использование:
Area-графики могут быть тяжёлыми при больших данных.
Практики оптимизации:
aggregate)Пример агрегации:
"transform": [
{
"aggregate": [
{ "op": "sum", "field": "value", "as": "total" }
],
"groupby": ["date"]
}
]
Area-график в Vega/Vega-Lite выступает не просто как визуальная заливка под линией, а как инструмент интегрального анализа распределённых данных, где форма, накопление и прозрачность совместно формируют семантику визуализации.