Отображение оси X диаграммы Vega-Lite не отображается через месяц после начала нового года

У меня есть диаграмма с датами в формате yyyy-mm-dd с типом «временная». Он также использует настраиваемую ось

chartAxis = {
  const obj = {};
  (obj.grid = false),
    (obj.tickCount = { interval: 'month', step: 1 }),
    (obj.labelAlign = 'left'),
    (obj.labelExpr = 'datum.label[0]');
  return obj;
}

С начала года вместо отображения первой буквы месяца он начал отображать первую цифру года.

Я в растерянности. Любые идеи?

введите описание изображения здесь


person Chris Keller    schedule 23.01.2021    source источник


Ответы (1)


Отображение даты по умолчанию, выбираемое Vega-Lite, зависит от диапазона отображаемых дат и расстояния между каждой меткой, а при переходе между годами часто отображается новый год. Вот простой пример:

{
  "data": {
    "values": [
      {"date": "2020-10-31T00:00:00", "value": 9},
      {"date": "2020-11-30T00:00:00", "value": 10},
      {"date": "2020-12-31T00:00:00", "value": 11},
      {"date": "2021-01-31T00:00:00", "value": 12},
      {"date": "2021-02-28T00:00:00", "value": 13}
    ]
  },
  "mark": "line",
  "encoding": {
    "x": {"type": "temporal", "field": "date"},
    "y": {"type": "quantitative", "field": "value"}
  }
}

введите описание изображения здесь

Если вы используете настраиваемое преобразование для отображения первого символа, то при переходе года первым символом будет "2".

Если вы хотите точно контролировать формат даты, вы можете сделать это, указав d3-date -format код в axis.format:

{
  "data": {
    "values": [
      {"date": "2020-10-31T00:00:00", "value": 9},
      {"date": "2020-11-30T00:00:00", "value": 10},
      {"date": "2020-12-31T00:00:00", "value": 11},
      {"date": "2021-01-31T00:00:00", "value": 12},
      {"date": "2021-02-28T00:00:00", "value": 13}
    ]
  },
  "mark": "line",
  "encoding": {
    "x": {"type": "temporal", "field": "date", "axis": {"format": "%b"}},
    "y": {"type": "quantitative", "field": "value"}
  }
}

введите описание изображения здесь

person jakevdp    schedule 23.01.2021
comment
Спасибо @jakevdp. Я ценю быстрый ответ и решение. Добавлен формат для моего объекта оси, и он сразу заработал. - person Chris Keller; 24.01.2021