Версия: 1.0

Форматирование значений

Форматирование по умолчанию

При использовании простых кодирований 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"
    }
  }
}

Получится следующий результат:

Столбчатая диаграмма с продажами по странам

Как много нулей! Сделаем значения удобнее для чтения. Чтобы применить строку форматирования 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"
    }
  }
}

Вот как выглядит исходный результат:

Линейный график продаж по датам без пользовательского форматирования

Применим описанный выше подход к обеим осям, чтобы настроить их отображение. Изменения выделены:

{
  ...
  "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), строки форматирования сработают соответствующим образом:

Линейный график во французской локали