Версия: 1.3
Форматирование значений
Форматирование по умолчанию
При использовании простых кодирований Vega или Vega-Lite самостоятельно определяет точность десятичных значений и другие параметры форматирования по своим правилам.
Везде, где применяется форматирование, эти настройки можно переопределить. И Vega, и Vega-Lite используют соглашения D3 для чисел, дат и времени — как, кстати, и Charticulator.
У Power BI собственный синтаксис строк форматирования. Возможно, вам удобнее использовать именно его, задавая пользовательское форматирование в спецификации.
Для совместимости с Vega и Vega-Lite — особенно при переносе примеров в Deneb или из него — по умолчанию Deneb использует соглашения D3. Однако предусмотрен и другой вариант.
Пользовательский форматтер Power BI
Если вы предпочитаете строки форматирования Power BI, в Deneb есть пользовательский тип форматирования pbiFormat. Их можно использовать вместо соглашений D3.
Использование в Vega-Lite
В Vega-Lite можно задать "pbiFormat" в свойстве formatType везде, где вы указываете format.
Пример с количественной осью
Допустим, у нас есть простая столбчатая диаграмма на основе финансового набора данных Power BI: она показывает [$ Sales] для каждой страны [Country]:
{
"data": {
"name": "dataset"
},
"mark": {
"type": "bar"
},
"encoding": {
"y": {
"field": "Country",
"type": "nominal"
},
"x": {
"field": "$ Sales",
"type": "quantitative"
}
}
}
Получится следующий результат:
![Простая столбчатая диаграмма на основе финансового набора данных с мерой [$ Sales]. Ось меры показывает исходные значения с максимумом 1 000 000 000. Столбчатая диаграмма с продажами по странам](/deneb/assets/versions/1.3/deeper-concepts/img/vega-lite-default.png)
Как много нулей! Сделаем значения удобнее для чтения. Чтобы применить строку форматирования Power BI и показать миллиарды долларов с одним знаком после запятой, изменим спецификацию следующим образом. Изменения выделены:
{
...
"encoding": {
...
"x": {
"field": "$ Sales",
"type": "quantitative",
"axis": {
"format": "$#0,,,.0bn",
"formatType": "pbiFormat"
}
}
}
}
Теперь значения читать проще:

Пример с количественной и временной осями
Если на основе того же набора данных построить линейный график [$ Sales] по датам [Date], спецификация будет такой:
{
"data": {
"name": "dataset"
},
"mark": {
"type": "line"
},
"encoding": {
"x": {
"field": "Date",
"type": "temporal"
},
"y": {
"field": "$ Sales",
"type": "quantitative"
}
}
}
Вот как выглядит исходный результат:
![Простой линейный график на основе финансового набора данных с мерой [$ Sales] и полем [Date] по оси x. Ось меры показывает исходные значения с максимумом чуть больше 400 000 000. Линейный график продаж по датам без пользовательского форматирования](/deneb/assets/versions/1.3/deeper-concepts/img/vega-lite-line-default.png)
Применим описанный выше подход к обеим осям, чтобы настроить их отображение. Изменения выделены:
{
...
"encoding": {
"x": {
...
"axis": {
"format": "MMM yyyy",
"formatType": "pbiFormat"
}
},
"y": {
...
"axis": {
"format": "$#0,,,.0bn",
"formatType": "pbiFormat"
}
}
}
}
Теперь обе оси отформатированы так, как нам нужно:

Использование в Vega
В Vega пользовательский форматтер вызывается вместо выражения format, например для подписи деления оси:
{
...
"axes": [
{
...
"encode": {
"labels": {
"update": {
"text": {
"signal": "pbiFormat(datum.value, '$#0,,,.0bn')"
}
}
}
}
},
...
],
...
}
Учёт локали
При использовании pbiFormat Deneb определяет локаль для значений по конфигурации Power BI.
Например, если открыть предыдущий линейный график с французской локалью (fr-FR), строки форматирования сработают соответствующим образом:
![В другой локали, например французской, форматирование [$ Sales] и [Date] использует соответствующие десятичные разделители и названия месяцев. Линейный график во французской локали](/deneb/assets/versions/1.3/deeper-concepts/img/vega-lite-line-fr-FR.png)