Vega lite / Altair解析日期在季度中指定

时间:2018-06-08 07:34:56

标签: vega vega-lite altair

我有一个数据集,其数据格式为2000Q1,2000Q2等。我想将其用作时间变量。

如何在Vega Lite / Altair中实现这一目标?

1 个答案:

答案 0 :(得分:1)

您可以将timeParsestring functions结合使用,作为calculate transform的一部分。

timeParse使用d3 time formats,遗憾的是它本身不支持宿舍,所以我们需要做一些字符串操作。

它不是很优雅,但这里是Vega Lite

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

在Altair,这看起来像这样:

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'
)