href в модели визуального кодированияВ спецификации Vega-Lite визуальные элементы описываются через
систему каналов кодирования (encoding channels), где каждое визуальное
свойство связывается с данными. Канал href относится к
классу поведенческих каналов, расширяющих визуализацию интерактивностью
за пределы графического представления.
Канал href определяет URL, на который осуществляется
переход при взаимодействии с графическим элементом (обычно клик). Таким
образом, каждый визуальный примитив — точка, столбец, линия или текст —
может быть связан с внешним ресурсом.
Ключевая идея:
href
в системе каналов Vega-LiteVega-Lite оперирует стандартным набором каналов:
x, ycolor, size,
shapetexttooltip, hrefКанал href относится к последней категории и реализует
переход по ссылке как часть визуального слоя.
В отличие от tooltip, который отвечает за всплывающую
информацию, href изменяет состояние среды (браузера),
инициируя навигацию.
hrefКанал задаётся внутри блока encoding и может принимать
либо константное значение, либо ссылку на поле данных.
{
"mark": "point",
"encoding": {
"x": { "field": "x", "type": "quantitative" },
"y": { "field": "y", "type": "quantitative" },
"href": { "field": "url", "type": "nominal" }
},
"data": {
"values": [
{ "x": 1, "y": 10, "url": "https://example.com/a" },
{ "x": 2, "y": 20, "url": "https://example.com/b" }
]
}
}
В данном примере каждая точка графика становится интерактивной ссылкой.
hrefVega-Lite не требует строгой типизации для href, однако
семантически канал работает с текстовыми значениями:
nominal — наиболее распространённый вариантordinal — используется редко, если ссылки
структурированыquantitative — практически не применяется, требует
преобразованияНа практике href почти всегда связывается с полем типа
строка.
На уровне компиляции Vega-Lite трансформирует href в
Vega-спецификацию событийного поведения. В Vega это реализуется
через:
events)url action)В упрощённом виде Vega-Lite генерирует логику:
click на markhrefhref
с другими каналамиКанал href не существует изолированно и часто
комбинируется с визуальными каналами, усиливая смысл данных.
color"encoding": {
"x": { "field": "category", "type": "nominal" },
"y": { "field": "value", "type": "quantitative" },
"color": { "field": "category", "type": "nominal" },
"href": { "field": "link" }
}
Каждая категория становится не только цветовым признаком, но и навигационной точкой.
tooltip"encoding": {
"x": { "field": "x" },
"y": { "field": "y" },
"tooltip": [
{ "field": "name" },
{ "field": "description" }
],
"href": { "field": "url" }
}
Здесь формируется двухуровневая интерактивность: предварительный просмотр и переход.
text"encoding": {
"text": { "field": "label" },
"href": { "field": "url" }
}
Текстовые элементы становятся аналогами гиперссылок в графике.
href в различных
типах marksПоддержка канала зависит от типа визуального элемента.
Наиболее частое использование. Каждая точка — отдельная ссылка.
Каждый столбец становится интерактивной областью перехода.
Используется для построения интерактивных подписей.
Позволяет создавать кликабельные области (heatmap, календарные диаграммы).
{
"mark": "bar",
"encoding": {
"x": { "field": "category", "type": "nominal" },
"y": { "field": "value", "type": "quantitative" },
"href": { "field": "docLink", "type": "nominal" }
},
"data": {
"values": [
{ "category": "A", "value": 28, "docLink": "https://site.com/a" },
{ "category": "B", "value": 55, "docLink": "https://site.com/b" },
{ "category": "C", "value": 43, "docLink": "https://site.com/c" }
]
}
}
Каждый столбец становится навигационным элементом, связанным с документом или внешней страницей.
На уровне рендеринга Vega использует SVG или Canvas. Реализация
href зависит от режима:
cursor: pointer и обработчика
onclickПри клике выполняется стандартная навигация браузера через
window.location.
Использование href требует соблюдения ограничений:
hrefVega-Lite поддерживает выражения через calculate и
трансформации, что позволяет формировать ссылки на основе данных.
{
"transform": [
{
"calculate": "'https://example.com/item/' + datum.id",
"as": "url"
}
],
"encoding": {
"href": { "field": "url" }
}
}
Это позволяет строить параметризованные маршруты.
Vega предоставляет альтернативу href через
on + signal:
href — декларативная навигацияПреимущества href:
Ограничения:
Канал href изменяет статус визуализации: из статического
представления данных она превращается в навигационный интерфейс. Каждый
mark становится точкой входа в информационную систему, а сама диаграмма
— слоем маршрутизации между сущностями данных.