Модель многоуровневой
визуализации
Подход overview + detail в декларативных системах визуализации
основан на разделении информации на два (или более) синхронизированных
уровня:
- Обзор (overview) — агрегированное представление
данных, позволяющее увидеть структуру, распределения и аномалии.
- Детализация (detail) — фокусное представление
выбранного подмножества данных с повышенной плотностью информации.
В архитектуре Vega этот подход естественно выражается через
реактивную систему сигналов и потоковую обработку данных, где разные
сцены (scenes) могут ссылаться на одни и те же источники данных, но
интерпретировать их по-разному.
В Vega-Lite аналогичный результат достигается через композицию
спецификаций (spec composition), особенно через layer,
concat, facet и интерактивные
selection.
Архитектурная
основа связанных представлений
Декларативная модель данных
В Vega данные описываются как поток трансформаций:
- загрузка (
data)
- преобразование (
transform)
- визуальное кодирование (
marks)
- реактивные зависимости (
signals)
Связанные представления возникают, когда несколько визуализаций:
- используют один источник данных
- или используют производные наборы данных
- или синхронизируются через сигналы
Сигнальная модель связи
(Vega)
Ключевой механизм:
signals — реактивные переменные
- изменения сигнала автоматически пересчитывают зависимости
Типичный паттерн:
- сигнал выбора диапазона в overview
- фильтрация detail через тот же сигнал
Пример логики:
{
"signals": [
{ "name": "brush", "value": null }
]
}
Далее этот сигнал используется в фильтрах:
{
"type": "filter",
"expr": "inrange(datum.x, brush)"
}
Overview + detail
как паттерн проектирования
Основные варианты связки
1. Brush-and-link
(выделение и связывание)
Один из наиболее распространённых механизмов:
- overview отображает весь набор данных
- пользователь выделяет область (brush)
- detail отображает выбранный диапазон
Характерные признаки:
- синхронизация через диапазонный сигнал
- интерактивный прямоугольник выбора
- фильтрация второго представления
2. Click-to-filter
(точечное связывание)
Вместо диапазона используется дискретный выбор:
- выбор категории
- выбор точки
- выбор группы
Detail обновляется через фильтрацию по значению:
datum.category == selectedCategory
3. Drill-down
(иерархическая детализация)
Используется при многоуровневых данных:
- уровень 1: агрегаты
- уровень 2: группы
- уровень 3: элементы
Переход между уровнями может быть:
- кликом
- переключением сигнала
- изменением масштаба
Реализация в Vega: связка
сцен
Общий принцип
В Vega multiple views строятся как:
- независимые группы (
group marks)
- общие сигналы
- общие или производные данные
Структура:
{
"marks": [
{
"type": "group",
"name": "overview",
"marks": []
},
{
"type": "group",
"name": "detail",
"marks": []
}
]
}
Синхронизация через сигналы
Ключевой механизм:
- сигнал определяется на верхнем уровне
- используется в нескольких группах
Пример концепции:
brush.x задаёт диапазон
- overview его изменяет
- detail его читает
Vega-Lite:
композиция связных представлений
Layered approach (слои)
В Vega-Lite слои позволяют накладывать:
- основную визуализацию
- интерактивные элементы
- вспомогательные маркеры
Пример:
{
"layer": [
{ "mark": "line" },
{ "mark": "rule" }
]
}
Concatenation (concat)
Позволяет размещать overview и detail рядом:
- горизонтально (
hconcat)
- вертикально (
vconcat)
Пример логики:
- слева overview
- справа detail
{
"hconcat": [
{ "mark": "area" },
{ "mark": "bar" }
]
}
Faceting как способ
детализации
Facet создаёт множественные detail-панели:
- каждая панель — подмножество данных
- общий overview может управлять фильтром
Пример:
- категории разбиты по панелям
- каждая панель синхронизируется сигналом выбора
Selection как ядро
связанного взаимодействия
Типы selection
interval selection
Используется для overview:
- выделение диапазона по оси X
- выделение области на плоскости
"selection": {
"brush": { "type": "interval" }
}
point selection
Используется для дискретных связей:
- выбор точки
- выбор категории
"selection": {
"sel": { "type": "point", "encodings": ["x"] }
}
Привязка detail к selection
Основной механизм фильтрации:
"transform": [
{
"filter": { "selection": "brush" }
}
]
Фактически detail становится проекцией состояния selection.
Двунаправленная связь
представлений
Обновление overview через
detail
В более сложных системах связь не односторонняя:
- detail может изменять агрегаты overview
- пересчёт статистик
- динамическая агрегация
Пример сценария:
- пользователь изменяет фильтр detail
- overview обновляет распределение
Общие данные и производные
наборы
Структурный подход:
- base dataset
- filtered dataset
- aggregated dataset
Каждое представление использует свой уровень трансформации.
Сложные паттерны связности
Linked brushing
между несколькими графиками
Несколько визуализаций:
- scatterplot overview
- histogram detail
- time series detail
Все связаны одним selection.
Многомерное связывание
Selection может быть:
- по X
- по Y
- по категории
- по времени
Комбинация создаёт многомерный фильтр.
Синхронизация масштаба
Zoom selection:
- overview управляет масштабом detail
- detail может менять область видимости overview
Производительность и поток
данных
Dataflow оптимизация Vega
В Vega оптимизация строится на:
- инкрементальных обновлениях
- кешировании вычислений
- минимальном пересчёте marks
Связанные представления выигрывают от:
- общих трансформаций
- повторного использования derived data
Разделение вычислений
Типичная стратегия:
- heavy aggregation → overview
- filtered subset → detail
Это снижает стоимость пересчёта при интерактивности.
Интерпретация через
реактивную модель
Сигналы как источник истины
Вся система сводится к:
- сигналам состояния
- зависимостям между сценами
- декларативным описаниям поведения
Изменение одного сигнала приводит к каскадному обновлению:
- selection → filter → marks → rendering
Связанные
представления как граф зависимостей
Можно интерпретировать систему как DAG:
- узлы: data, transforms, marks
- рёбра: зависимости сигналов
- пересчёт: реактивный propagation
Сравнение подходов Vega и
Vega-Lite
Уровень абстракции
- Vega: низкоуровневый граф вычислений
- Vega-Lite: декларативные шаблоны визуализаций
Реализация linked views
- Vega: через signals и explicit dataflow
- Vega-Lite: через selection + composition operators
Гибкость
- Vega: максимальная гибкость
- Vega-Lite: ограниченная, но более структурированная композиция
Типовые архитектуры
overview + detail
1. Двухпанельная модель
- слева overview
- справа detail
- синхронизация через brush
2. Три уровня детализации
- global overview
- mid-level grouping
- local detail
3. Панель фильтров +
визуализация
- фильтр выступает как overview состояния
- график — как detail представление
Расширенные техники
взаимодействия
Cross-filtering
- выбор в одном графике фильтрует другие
- используется shared selection state
Coordinated multiple views
(CMV)
Несколько визуализаций:
- каждая отвечает за свой аспект данных
- все синхронизированы через общие сигналы
Semantic linking
Связывание не только по данным, но и по смыслу:
- одинаковые категории
- временные интервалы
- метки событий