如何从时序图中排除某些日期(例如,周末)?

时间:2018-12-16 17:33:50

标签: python altair

在下面的示例中,我想排除周末并将Y绘制为一条直线,并为主要刻度线标签指定一些自定义频率,因为它们将是一个“中断”的时间序列(例如,每个星期一,例如matplotlib的{​​{1}})。

我将如何在Altair中做到这一点?

set_major_locator

enter image description here

1 个答案:

答案 0 :(得分:2)

一种快速的方法是将轴指定为序数字段。这将产生一个非常丑陋的轴,其中每个刻度都指定了小时数。为了改变这一点,我在数据框中添加了带有给定标签的列。我还添加了a,默认情况下将其删除以进行序数编码,并将grid设置为0。

labelAngle

altair-chart-ordinal-axis

请注意,它将删除所有遗漏的点。因此,也许您想添加一个工具提示。在文档here中对此进行了讨论。 您还可以根据自己的帽子在轴设置中使用df2 = df.assign(label=index.strftime('%b %d %y')) alt.Chart(df2).mark_line().encode( x=alt.X('label:O', axis=alt.Axis(grid=True, labelAngle=0)), y='Y:Q' )


要自定义轴,我们可以使用labelOverlap来构建轴,并使用mark_text和自定义数据框来返回网格。它不一定可以很好地扩展,但是可以给您一些想法。

mark_rule

enter image description here