В спецификации Vega-Lite форматирование числовых значений
определяется через механизм, основанный на формате библиотеки D3-format.
Параметр numberFormat применяется к визуальным
представлениям чисел в подписях осей, легендах, метках и подсказках,
позволяя контролировать отображение точности, разделителей разрядов,
научной нотации и других аспектов.
numberFormatЧисловое форматирование в Vega-Lite может задаваться на нескольких уровнях:
config)axis)legend)text, label)Наиболее универсальный вариант — использование
config.numberFormat, который задаёт формат по умолчанию для
всех числовых значений в визуализации.
{
"config": {
"numberFormat": ".2f"
}
}
В этом случае все числа будут отображаться с двумя знаками после запятой.
Форматирование чисел в Vega-Lite опирается на спецификацию:
[align][sign][symbol][0][width][,][.precision][type]
На практике чаще используются упрощённые формы:
.2f — фиксированная точка, 2 знака после запятой.0f — целые числа без дробной части,.2f — с разделением тысяч.2% — процентное представление.2e — экспоненциальная запись{
"mark": "bar",
"encoding": {
"y": {"field": "value", "type": "quantitative"}
},
"config": {
"numberFormat": ".1f"
}
}
Значения отображаются с одной десятичной цифрой.
{
"config": {
"numberFormat": ",.0f"
}
}
Числа вида 1000000 преобразуются в
1,000,000.
{
"config": {
"numberFormat": ".1%"
}
}
Значение 0.25 отображается как 25.0%.
numberFormatГлобальная настройка может быть переопределена на уровне конкретного поля:
{
"mark": "text",
"encoding": {
"text": {
"field": "value",
"type": "quantitative",
"format": ".3f"
}
}
}
Здесь формат применяется только к текстовым меткам.
Tooltip часто требует более точного контроля над отображением чисел:
{
"mark": "point",
"encoding": {
"x": {"field": "x", "type": "quantitative"},
"y": {"field": "y", "type": "quantitative"},
"tooltip": [
{"field": "x", "type": "quantitative", "format": ".2f"},
{"field": "y", "type": "quantitative", "format": ".2f"}
]
}
}
Каждое поле получает собственное форматирование.
timeFormatРабота с временными данными в Vega-Lite основана на стандартах
d3-time-format. Параметр timeFormat управляет
тем, как временные значения отображаются в осях, легендах и текстовых
элементах.
Временные значения в Vega-Lite имеют тип:
"type": "temporal"
И могут отображаться в различных представлениях:
Форматирование управляется строками, аналогичными
strftime.
Основные спецификаторы:
%Y — год (2026)%m — месяц (01–12)%d — день месяца%H — часы (24-часовой формат)%M — минуты%S — секунды%b — сокращённое название месяца%B — полное название месяца%a — день недели (сокращённый)%A — день недели (полный){
"config": {
"timeFormat": "%Y-%m-%d"
}
}
Результат: 2026-05-21
{
"config": {
"timeFormat": "%Y-%m"
}
}
Результат: 2026-05
{
"config": {
"timeFormat": "%Y-%m-%d %H:%M:%S"
}
}
Результат: 2026-05-21 14:30:00
Формат времени может быть задан на уровне конкретного канала:
{
"mark": "line",
"encoding": {
"x": {
"field": "date",
"type": "temporal",
"axis": {
"format": "%d.%m.%Y"
}
}
}
}
Здесь формат применяется только к оси X.
{
"encoding": {
"x": {
"field": "date",
"type": "temporal",
"axis": {
"format": "%b %Y"
}
}
}
}
Отображение: Jan 2026, Feb 2026 и т.д.
{
"encoding": {
"color": {
"field": "date",
"type": "temporal",
"legend": {
"format": "%Y"
}
}
}
}
В Vega-Lite существует принципиальное различие между
timeUnit и timeFormat.
timeUnit преобразует данные до визуализации:
{
"timeUnit": "yearmonth",
"field": "date"
}
Результат — агрегация по месяцам.
timeFormat не изменяет данные, а только их
отображение.
Разделение функций:
timeUnit — трансформация данныхtimeFormat — визуальное представление{
"config": {
"timeFormat": "%Y-%m-%d",
"axis": {
"labelAngle": 0
}
}
}
Все временные значения получают единый формат, если не переопределены локально.
В реальных визуализациях оба механизма часто используются одновременно:
{
"config": {
"numberFormat": ",.1f",
"timeFormat": "%Y-%m-%d"
},
"mark": "line",
"encoding": {
"x": {"field": "date", "type": "temporal"},
"y": {"field": "value", "type": "quantitative"}
}
}
Числовые значения получают разделители тысяч и округление, временные значения — человекочитаемый формат даты.
Если numberFormat или timeFormat не
указаны:
Автоматическое форматирование может меняться при изменении диапазона значений, что особенно заметно на динамических графиках и при масштабировании осей.
{
"facet": {
"field": "category",
"type": "nominal"
},
"spec": {
"mark": "bar",
"encoding": {
"x": {"field": "date", "type": "temporal"},
"y": {
"field": "value",
"type": "quantitative",
"format": ".0f"
}
}
}
}
Каждая ячейка может наследовать или переопределять форматирование независимо.
{
"encoding": {
"tooltip": [
{
"field": "date",
"type": "temporal",
"format": "%A, %d %B %Y"
},
{
"field": "value",
"type": "quantitative",
"format": ",.2f"
}
]
}
}
В одном tooltip одновременно применяются оба типа форматирования.
Vega-Lite может использовать локализацию для чисел и дат, если не заданы явные форматы:
При явном указании numberFormat и
timeFormat локализация частично подавляется в пользу
заданного шаблона.