Тип mark image в Vega и Vega-Lite предназначен для
отображения растровых изображений как визуальных элементов в
координатной системе визуализации. В отличие от геометрических
примитивов (кругов, линий, прямоугольников), изображение рассматривается
как текстурированный маркер, привязанный к данным и позиционируемый
через стандартные каналы координат.
Изображения интегрируются в визуализацию как полноценные элементы сцены, поддерживающие масштабирование, трансформации и привязку к данным, что позволяет использовать их в качестве:
В Vega тип image задаётся через объект mark с
обязательным указанием типа:
{
"type": "image",
"from": { "data": "table" },
"encode": {
"enter": {
"x": { "scale": "xscale", "field": "x" },
"y": { "scale": "yscale", "field": "y" },
"url": { "field": "url" },
"width": { "value": 40 },
"height": { "value": 40 }
}
}
}
Ключевой особенностью является обязательное использование канала
url, который указывает путь к изображению. Vega не
интерпретирует изображения как бинарные данные — они всегда загружаются
по URL.
Mark image поддерживает стандартные визуальные
каналы:
Особое значение имеет aspect, контролирующий искажение
изображения при масштабировании. При значении true
сохраняются пропорции исходного файла, при false
изображение растягивается под заданные размеры.
Vega-Lite упрощает работу с изображениями, скрывая большую часть низкоуровневой спецификации Vega.
Базовая форма:
{
"data": {
"values": [
{ "x": 10, "y": 20, "img": "a.png" },
{ "x": 30, "y": 40, "img": "b.png" }
]
},
"mark": "image",
"encoding": {
"x": { "field": "x", "type": "quantitative" },
"y": { "field": "y", "type": "quantitative" },
"url": { "field": "img" }
}
}
В Vega-Lite канал url играет центральную роль и
связывается с полем данных, содержащим строковый путь к изображению.
Изображения в визуализациях подчиняются правилам координатных систем
и масштабов. При использовании количественных шкал
(quantitative scales) координаты x и
y преобразуются через scale-функции, после чего изображение
размещается в вычисленной точке.
Размер изображения задаётся двумя основными стратегиями:
width, height)size,
scale)При использовании фиксированных размеров изображение ведёт себя как статический спрайт, тогда как при использовании масштабируемых каналов оно может динамически изменять размер в зависимости от данных.
Ключевой аспект работы с image mark — управление
соотношением сторон. Поведение определяется параметром
aspect:
В Vega это выражается явно, в Vega-Lite — чаще через дополнительные параметры конфигурации:
"config": {
"mark": {
"aspect": true
}
}
Типичный сценарий — замена точек scatter plot изображениями:
{
"mark": "image",
"encoding": {
"x": { "field": "time", "type": "temporal" },
"y": { "field": "value", "type": "quantitative" },
"url": { "field": "icon" }
}
}
В таком представлении каждая точка данных заменяется визуальным символом, что усиливает семантическую интерпретацию графика.
Image mark тесно взаимодействует с transform-пайплайном Vega:
filter позволяет отбирать изображения по условиямcalculate формирует динамические URLlookup связывает таблицы изображений с основными
даннымиjoin aggregate используется для группировки изображений
по категориямПример вычисляемого URL:
{
"transform": [
{
"calculate": "'/icons/' + datum.type + '.png'",
"as": "icon_url"
}
]
}
Image mark часто используется в grid-визуализациях, где изображения размещаются в регулярной структуре. В таких случаях координаты задаются через индексные вычисления:
x = index % columnsy = floor(index / columns)Такая схема применяется для построения галерей, каталогов и матричных представлений данных.
Отображение большого количества image-mark элементов имеет особенности:
При высокой плотности данных предпочтение часто отдается:
Image mark поддерживает стандартные события Vega:
hoverclickselectСобытия позволяют связывать изображения с интерактивными фильтрами и динамическими обновлениями данных. Изображения становятся не только визуальными элементами, но и интерактивными узлами визуализации.
При использовании различных coordinate systems (например,
polar или geo) поведение image mark
изменяется:
Особое значение имеет корректная интерпретация угловых преобразований, так как изображение сохраняет прямоугольную форму независимо от системы координат.
Image mark эффективно применяется в фасетированных визуализациях:
Такая структура используется для визуальных сравнений категорий через набор изображений, распределённых по сетке подграфиков.