【发布时间】:2020-06-06 14:53:16
【问题描述】:
我正在尝试在 Altair 中创建时间范围跨越几天的时间序列图的 Vega-Lite 规范。因为在我的情况下,哪一天是清楚的,我想通过让标签采用'%H:%M' 的形式来减少我的轴标签中的噪音,即使这会导致标签不明显。
这是一些示例数据;我的实际数据有五分钟的分辨率,但我想这在这里无关紧要:
import altair as alt
import numpy as np
import pandas as pd
# Create data spanning 30 hours, or just over one full day
df = pd.DataFrame({'time': pd.date_range('2018-01-01', periods=30, freq='H'),
'data': np.arange(30)**.5})
通过使用其他微不足道的yearmonthdatehoursminutes 转换,我得到以下信息:
alt.Chart(df).mark_line().encode(x='yearmonthdatehoursminutes(time):T',
y='data:Q')
现在,我的目标是去掉横轴标签中的日期,使它们变成['00:00', '03:00', ..., '21:00', '00:00', '03:00'] 之类的东西,或者任何最合适的间距。
只使用hoursminutes 作为转换的天真方法是行不通的,因为它会合并实际数据:
alt.Chart(df).mark_line().encode(x='hoursminutes(time):T', y='data:Q')
那么,有没有一种声明式的方式来做到这一点?最终,可视化将使用选择来定义水平轴限制,因此使用Axis 明确指定标签似乎并不吸引人。
【问题讨论】:
标签: python time-series data-visualization vega-lite altair