【问题标题】:Plotting only certain dates in an array仅在数组中绘制某些日期
【发布时间】:2016-12-26 14:13:09
【问题描述】:

我是 python 编程的新手,一直在尝试将数字与日期放在一起。唯一的问题是,当我单独绘制它时,它似乎显示了我日期范围内的每个日期。因此,x 轴完全无法辨认。有什么方法可以保留我的所有数据点,但 x 轴只显示月份的日期,或者类似的东西?

代码和一些示例数据如下:

import datetime as dt
import matplotlib.dates as mdates
import matplotlib.pyplot as plt
dates=['1/08/2015', '2/08/2015', '1/09/2015', '2/09/2015', '3/09/2015','4/09/2015', '5/09/2015', '1/10/2015', '2/11/2015', '3/11/2015', '4/11/2015', '5/11/2015', '1/12/2015', '2/12/2015', '1/01/2016', '2/01/2016', '3/01/2016', '1/02/2016', '2/02/2016', '3/02/2016', '4/02/2016', '1/03/2016', '6/03/2016', '1/04/2016', '2/05/2016', '1/06/2016', '1/07/2016', '2/07/2016', '3/07/2016', '4/07/2016', '5/07/2016', '1/08/2016', '2/08/2016', '3/08/2016'] 
converteddates= [dt.datetime.strptime(d, '%d/%m/%Y').date() for d in dates]
data=range(len(converteddates))
plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%d/%m/%Y'))
plt.gca().xaxis.set_major_locator(mdates.DayLocator())
plt.plot(converteddates,data)
plt.gcf().autofmt_xdate()
plt.show()

【问题讨论】:

    标签: date datetime matplotlib plot


    【解决方案1】:

    您应该使用 MonthLocator(DayLocator 的工作是每天打勾):

    plt.gca().xaxis.set_major_locator(mdates.MonthLocator())
    plt.plot(converteddates,data)
    plt.gcf().autofmt_xdate()
    

    但更好的方法可能是:

    fig, ax = plt.subplots()
    ax.plot_date(converteddates, data)
    

    如果它仍然不喜欢你的日期,那么在下面设置刻度和标签:

    ax.set_xticks(converteddates)
    strdates = [d.strftime("%d/%m/%Y") for d in converteddates]
    ax.set_xticklabels(strdates, rotation="45")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-09
      • 1970-01-01
      • 2020-07-08
      • 2021-10-23
      • 1970-01-01
      相关资源
      最近更新 更多