所以这是我的问题,我需要用matplotlib来解决。我已经在网上发现了这个变种,但我有一个新的皱纹,我似乎无法根据这些来弄清楚。
我有这种格式的日期列表
我需要制作他们月份相对频率的直方图。我希望这个直方图在那里有实际的月份标签,以便x轴有“Jan”,“Feb”等标签......
如何使用matplotlib日期例程执行此操作?似乎他们不能以这种方式很好地使用直方图,我只关注月度分布,而不是日期或年份....
答案 0 :(得分:2)
一个简单的解决方案可能如下:
您根本不需要使用日期时间对象,只需将日期字符串列表转换为月份数列表,例如"20150419"
映射到4
。
然后可以将该列表轻松地绘制为直方图。
为了获得月份'名称,您可以简单地将它们写下来或从日期时间对象列表中获取它们。
import numpy as np
import matplotlib.pyplot as plt
import datetime
dates = ["20150204", "20150404","20151004","20151005", "20151007","20150704",
"20160404", "20160522","20160527","20160626", "20160725","20170223"]
dtm = lambda x: int(x[4:6])
months = list(map(dtm, dates))
fig, ax = plt.subplots()
bins = np.arange(1,14)
ax.hist(months, bins = bins, edgecolor="k", align='left')
ax.set_xticks(bins[:-1])
ax.set_xticklabels([datetime.date(1900,i,1).strftime('%b') for i in bins[:-1]] )
plt.show()