【问题标题】:pandas DatetimeIndex to matplotlib x-ticks熊猫 DatetimeIndex 到 matplotlib x-ticks
【发布时间】:2020-12-27 04:20:42
【问题描述】:

我有一个带有日期索引的 pandas Dateframe,如下所示:

Date
2020-09-03
2020-09-04
2020-09-07 
2020-09-08

日期缺少一些条目,因为它只有工作日的数据。

我想做的是:绘制图形并在一周的每个星期一设置一个 x 刻度。

到目前为止我已经尝试过:

date_form = DateFormatter("%d. %b %Y")
ax4.xaxis.set_major_formatter(date_form)
ax4.xaxis.set_major_locator(mdates.WeekdayLocator(byweekday=MO))

但它会从 1970 年开始,而不是从实际的日期索引开始。

然后我尝试:

mdates.set_epoch('First day of my data')

但这无济于事,因为星期六和星期日在我的原始索引中被跳过了。

有什么想法可以做吗?

【问题讨论】:

    标签: python-3.x pandas datetime matplotlib


    【解决方案1】:

    如果你用 datetime 类型的一个轴绘制线图, 最自然的解决方案是使用 plot_date

    我创建了一个示例 DataFrame,如下所示:

                Amount
    Date              
    2020-08-24     210
    2020-08-25     220
    2020-08-26     240
    2020-08-27     215
    2020-08-28     243
    ...
    

    日期(索引)属于日期时间类型。

    要绘制的代码是:

    import matplotlib.pyplot as plt
    import matplotlib.dates as mdates
    
    fig, ax = plt.subplots()
    plt.xticks(rotation=30)
    ax.plot_date(df.index, df.Amount, linestyle='solid')
    ax.xaxis.set_major_locator(mdates.WeekdayLocator(byweekday=0))
    plt.grid()
    plt.show()
    

    我得到的图片是:

    如您所见,x 个刻度绝对没有问题,它们 只是在星期一,随你的便。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-16
      • 1970-01-01
      • 2021-11-16
      • 2013-02-18
      • 1970-01-01
      • 1970-01-01
      • 2018-12-12
      相关资源
      最近更新 更多