Matplotlib - x 轴与日期时间之间的不均匀间隔
Posted
技术标签:
【中文标题】Matplotlib - x 轴与日期时间之间的不均匀间隔【英文标题】:Matplotlib - uneven intervals between x-axis with datetime 【发布时间】:2019-06-01 03:00:00 【问题描述】:我目前遇到一个问题,当我的 x 轴使用 DatetimeIndex
时,我的绘图上的刻度之间的间隔似乎有不均匀的间隔。代码如下:
x = pd.date_range('2018-11-03', '2018-12-30')
plt.plot(x, np.arange(len(x)))
plt.xticks(rotation=45)
请注意日期不按典型的 7 天周期递增的两种情况。即使延长时间段,问题仍然存在:
x = pd.date_range('2018-11-03', '2019-03-20')
plt.plot(x, np.arange(len(x)))
plt.xticks(rotation=45)
如何覆盖此行为以在我的地块上设置标准的 7 天间隔?谢谢。
【问题讨论】:
【参考方案1】:您可以使用 matplotlib 的ticker 模块来自定义刻度位置:
import matplotlib.pyplot as plt
import pandas as pd
import matplotlib.ticker as ticker
x = pd.date_range('2018-11-03', '2019-03-20')
plt.plot(x, np.arange(len(x)))
plt.xticks(rotation=45)
ax=plt.gca()
ax.xaxis.set_major_locator(ticker.MultipleLocator(7))
以上脚本返回如下图片:
【讨论】:
非常感谢。做这项工作。我很好奇为什么首先会发生这种行为?我记得matplotlib
会自动调整最佳空间。
我也很惊讶你一开始就有不均匀的刻度标签。在 Python 3.5.4 (Spyder IDE 2.3.8) 下运行脚本会产生一个带有均匀间隔刻度标签的图形(14 天间隔)。
目前正在使用 anaconda,所以我将尝试全新安装。再次感谢您的帮助。
这种行为应该在 Matplotlib 3.1 (~Feb) 中得到改进。滴答声将落在第一个或第十五个。请注意,AutoDateLocator 有一个 kwarg:interval_multiples=True
,过去默认为 False。因此,刻度每 14 天下降一次,无论它们在哪个月(1 月 1 日、1 月 15 日、1 月 29 日、2 月 12 日)。这已更改,但如果您希望恢复旧行为,您仍然可以设置为 False。以上是关于Matplotlib - x 轴与日期时间之间的不均匀间隔的主要内容,如果未能解决你的问题,请参考以下文章
使用 matplotlib 在时间序列中自定义日期范围(x 轴)