使用 pandas timedelta 绘图时的轴间隔间距

Axis interval spacing when plotting with pandas timedelta

我正在尝试在以 pandas timedelta 值作为索引的数据框中绘制一些列。当我绘制它时,所有点都沿 x 轴均匀分布,即使它们之间存在可变时间。

time = [pd.Timestamp('9/3/2016')-pd.Timestamp('9/1/2016'),pd.Timestamp('9/8/2016')-pd.Timestamp('9/1/2016'),pd.Timestam\p('9/29/2016')-pd.Timestamp('9/1/2016')]
df = pd.DataFrame(index=time, columns=['y'],data=[5,0,10])
df.plot()
plt.show()

Wrong spacing

如果我使用日期而不是 timedelta,我会在 x 轴上得到正确的间距:

time = [pd.Timestamp('9/3/2016'),pd.Timestamp('9/5/2016'),pd.Timestamp('9/20/2016')]
df = pd.DataFrame(index=time, columns=['y'],data=[5,0,10])
df.plot()
plt.show()

Right spacing

有没有办法让它正确显示?

目前,pandas 尚未完全支持它。请参阅 this issue on Github 了解更多信息。

要快速解决问题,您可以使用:

import matplotlib.pyplot as plt
plt.plot(df.index, df.values)

这是一个示例,说明如何使用刻度线来提高它们的可读性(而不仅仅是一个非常大的数字)

import matplotlib as mpl
import datetime
fig, ax = plt.subplots()
ax.plot(df.index, df.values)
plt.xticks([t.value for t in df.index], df.index, rotation=45)
plt.show()