Дата разбора Vega lite / Altair указана в кварталах - PullRequest
0 голосов
/ 08 июня 2018

У меня есть набор данных с данными в форме 2000Q1, 2000Q2 и т. Д. Я хотел бы использовать это как временную переменную.

Как мне добиться этого в Vega Lite / Altair?

1 Ответ

0 голосов
/ 08 июня 2018

Вы можете использовать timeParse в сочетании с строковыми функциями как часть вычисления преобразования .

timeParse использует d3 timeформаты , которые, к сожалению, изначально не поддерживают четверти, поэтому нам нужно выполнить некоторые манипуляции со строками.

Это не очень элегантно, но вот Vega Lite

"transform": [
    {
      "as": "date",
      "calculate": "timeParse(replace(replace(replace(replace(datum.yearquarter, 'Q1', '02'), 'Q2', '05'),  'Q3', '08'), 'Q4', '11'), '%Y%m')"
    }
  ]

В Альтаиреэто выглядит так:

chart = alt.Chart(url
).transform_calculate(date = "timeParse(replace(replace(replace(replace(datum.yearquarter, 'Q1', '02'), 'Q2', '05'),  'Q3', '08'), 'Q4', '11'), '%Y%m')"
).mark_bar().encode(
y = 'sum(value):Q',
x = 'date:T'
)
...