【问题标题】:Manipulating Dates in x-axis Pandas Matplotlib在 x 轴 Pandas Matplotlib 中操作日期
【发布时间】:2017-08-01 08:34:18
【问题描述】:

我有一组非常简单的数据,如下所示。我正在寻找一种方法来绘制此堆叠条形图并格式化 x 轴(日期),使其从 1996-31-12 开始,以 365 天为增量在 2016-31-12 结束。我编写的代码正在绘制每个日期,因此 x 轴非常混乱且不可读。

Datafame:

Date             A             B  
1996-31-12       10            3
1997-31-03       5             6
1997-31-07       7             5
1997-30-11       3             12
1997-31-12       4             10
1998-31-03       5             8
.
.
.
2016-31-12       3             9

【问题讨论】:

    标签: python pandas datetime matplotlib


    【解决方案1】:

    这是一个类似的问题:Pandas timeseries plot setting x-axis major and minor ticks and labels

    您可以使用 matplotlib 本身而不是 pandas 来管理它。

    import pandas as pd
    import matplotlib.pyplot as plt
    import matplotlib.dates as mdates
    
    # if your dates are strings you need this step
    df.Date = pd.to_datetime(df.Date)
    
    fig,ax = plt.subplots()
    ax.plot_date(df.Date,df.A)
    ax.plot_date(df.Date,df.B)
    ax.xaxis.set_major_locator(mdates.YearLocator())
    ax.xaxis.set_major_formatter(mdates.DateFormatter('%b\n%Y'))
    plt.show()
    

    【讨论】:

    • 我尝试了上面的代码并收到一条错误消息:AttributeError: 'str' object has no attribute 'toordinal'。有什么想法吗?
    • 哦,你的日期是字符串吗?请查看编辑后的答案。
    • 我想我现在遇到的另一个问题似乎无法弄清楚是我需要一个堆积条形图。我尝试添加 kind=bar 和 Stacked=true 但 plot_date 函数似乎没有任何效果
    • 我一直在尝试使用 pandas 来解决这个问题,但一直未能成功。看起来这里可能存在特定于条形图的问题:github.com/pandas-dev/pandas/issues/14119
    猜你喜欢
    • 2020-10-30
    • 2016-11-10
    • 2018-08-31
    • 1970-01-01
    • 2013-03-24
    • 1970-01-01
    • 2020-12-07
    • 2020-10-01
    • 2015-05-02
    相关资源
    最近更新 更多