【问题标题】:Axis interval spacing when plotting with pandas timedelta使用 pandas timedelta 绘图时的轴间隔间距
【发布时间】:2017-03-30 00:52:09
【问题描述】:

我正在尝试在以 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

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

【问题讨论】:

    标签: python datetime pandas matplotlib timedelta


    【解决方案1】:

    目前,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()
    

    【讨论】:

    • 刚刚添加了一个示例,说明如何在此之后格式化刻度......因为默认情况下它们看起来很垃圾(基本上是一个非常大的数字......)。如果这有帮助,请投票给答案,如果它解决了您的问题,也请接受。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-20
    • 1970-01-01
    • 2020-05-31
    • 1970-01-01
    • 1970-01-01
    • 2020-07-05
    • 1970-01-01
    相关资源
    最近更新 更多