Параметры format и formatType в Vega-Lite
используются для управления отображением значений данных при их
визуализации, прежде всего в текстовых каналах, подписях осей, tooltip и
других местах, где требуется преобразование «сырых» значений в
человекочитаемый вид. Эти параметры находятся на границе между моделью
данных и представлением, опираясь на систему форматирования D3 и
расширенные правила интерпретации типов.
В Vega-Lite форматирование применяется в тех случаях, когда значение из набора данных необходимо представить не в исходном виде, а в преобразованной строковой форме:
Форматирование используется в следующих каналах:
texttooltipaxis.labellegend.labelheader.labelformat определяет строку шаблона, которая применяется к
значению перед выводом.
Для чисел используется синтаксис форматов D3
(d3-format), например:
.2f — фиксированное число с двумя знаками после
запятой, — разделитель тысяч.1% — процентный формат$.2f — формат валюты (при условии ручного добавления
символа)Пример числового форматирования:
{
"mark": "text",
"encoding": {
"text": {
"field": "value",
"type": "quantitative",
"format": ",.2f"
}
}
}
В данном случае числа будут отображаться с разделителями тысяч и двумя знаками после запятой.
Для временных данных format использует спецификаторы
D3-time-format.
Примеры:
%Y — год (2026)%m — месяц (01–12)%d — день месяца%H:%M — часы и минуты%Y-%m-%d — стандартная датаПример:
{
"mark": "text",
"encoding": {
"text": {
"field": "date",
"type": "temporal",
"format": "%Y-%m-%d"
}
}
}
Значения временного поля будут приведены к формату ISO-подобной строки без времени.
formatType определяет интерпретатор, который будет
использоваться для применения строки format. Это
критический параметр, поскольку один и тот же формат может трактоваться
по-разному в зависимости от типа данных.
Основные значения:
"number" — числовое форматирование через d3-format"time" — локальное время через d3-time-format"utc" — UTC-время через d3-time-format"string" — строковая обработка без сложного
преобразованияЛогика применения следующая:
formatType определяет механизм обработкиformat задаёт правила преобразования внутри выбранного
механизмаОшибочная комбинация приводит либо к игнорированию форматирования, либо к некорректному отображению значений.
При использовании числового типа применяется библиотека d3-format. Форматная строка интерпретируется как спецификатор числа с фиксированной точностью, экспонентой или разделителями.
Пример с осью:
{
"mark": "point",
"encoding": {
"x": {
"field": "value",
"type": "quantitative",
"axis": {
"format": ",.0f",
"formatType": "number"
}
}
}
}
В этом случае значения на оси X отображаются как целые числа с разделением тысяч.
При работе с локальным временем применяется d3-time-format, где строка форматирования соответствует календарным компонентам даты.
Пример для оси:
{
"mark": "line",
"encoding": {
"x": {
"field": "timestamp",
"type": "temporal",
"axis": {
"format": "%H:%M",
"formatType": "time"
}
}
}
}
Результат — отображение времени в формате часов и минут.
UTC-формат используется для строгой временной шкалы без локального смещения. Это особенно важно при анализе событий, где временная зона не должна влиять на интерпретацию.
{
"mark": "line",
"encoding": {
"x": {
"field": "timestamp",
"type": "temporal",
"axis": {
"format": "%Y-%m-%dT%H:%M",
"formatType": "utc"
}
}
}
}
Значения интерпретируются как универсальное время.
Строковый тип используется в случаях, когда форматирование либо отсутствует, либо применяется минимально. Обычно используется для:
Пример:
{
"mark": "text",
"encoding": {
"text": {
"field": "category",
"type": "nominal",
"formatType": "string"
}
}
}
В axis форматирование влияет на подписи шкалы:
{
"axis": {
"format": ".1f",
"formatType": "number"
}
}
Используется для контроля читаемости шкал при плотных данных.
В легендах форматирование позволяет стандартизировать отображение категорий:
{
"legend": {
"format": ".0%",
"formatType": "number"
}
}
Это особенно важно при отображении долей и вероятностей.
Tooltip использует форматирование для улучшения восприятия данных при наведении:
{
"tooltip": {
"field": "value",
"type": "quantitative",
"format": ",.2f",
"formatType": "number"
}
}
Если formatType не указан, Vega-Lite делает вывод на
основе типа данных:
Однако автоматический выбор не всегда совпадает с требуемым поведением, особенно в сложных временных данных или при кастомных форматах.
Форматирование не изменяет данные, а только их визуальное представление. Это означает:
Также важно учитывать, что некорректный формат может привести к:
При использовании трансформаций (transform,
calculate, aggregate) форматирование
применяется к уже изменённому набору данных. Это создаёт цепочку:
Например, при агрегации:
{
"aggregate": [{"op": "mean", "field": "value", "as": "avg"}]
}
и последующем отображении:
{
"field": "avg",
"type": "quantitative",
"format": ".3f",
"formatType": "number"
}
Vega-Lite не выполняет полноценную локализацию, однако форматирование позволяет частично адаптировать отображение:
Полная локализация требует внешнего уровня над Vega-Lite.
В сложных дашбордах форматирование становится инструментом управления когнитивной нагрузкой:
Комбинация format и formatType позволяет
отделить семантику данных от их визуального представления, сохраняя
чистоту модели и гибкость интерфейса.