在matplotlib中绘制时序图时,当使用datetime作为x轴时,图表中会出现周末空缺。一个常见的解决方法是将datetime替换为整数索引,但这会打破matplotlib的日期格式化、定位器和其他时间有关工具。

不久前,我找到了解决方案并编写了一个自定义的matplotlib刻度,以移除周末空缺,而保留日期轴的正确性。现在,我将它整合到了一个Python包中:

我的项目做什么

实现并部署一个 matplotlib刻度来从datetime x-轴上移除周末、假期和非标准工作时间。

在背后,matplotlib表示datetimes为自1970-01-01以来的天数。这种刻度重新映射这些值到自1970-01-01以来的工作日数,跳过周末、假期和非标准工作时间。工作日可以通过标准的numpy.is_busday选项来配置。 从概念上讲,它的行为类似于日志刻度:一种转换应用到轴上,而不是到数据本身。

目标受众

绘制金融或商业时序图数据的人想从x轴中移除非标准时间。

使用方法

pip install busdayaxis


import busdayaxis  
busdayaxis.register_scale()   # register the scale with Matplotlib


ax.set_xscale("busday") # 移除周末  
ax.set_xscale("busday", bushours=(9, 17)) # 还可以压缩漫长的空白时间

GitHub示例:https://github.com/saemeon/busdayaxis

文档包含多个示例:https://saemeon.github.io/busdayaxis/

这是我的第一个发布的Python包,也是我的第一次 Reddit 帖子。 欢迎对我的包的反馈、评论、建议或批评。