使用 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()
我正在尝试在以 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()