所以这是我的问题,我需要用 matplotlib 来解决。我已经在网上找到了这种变体,但我有一个新的皱纹,我似乎无法根据这些皱纹找出答案。
我有一个这种格式的日期列表
我需要制作他们月份的相对频率的直方图。我希望这个直方图在那里有实际的月份标签,以便 x 轴有标签,如“Jan”、“Feb”等......
我如何使用 matplotlib 日期例程来做到这一点?似乎他们在这种方式下不能很好地处理直方图,我只看月度分布而不是天数或年数......
一个简单的解决方案可能如下:
您根本不需要使用日期时间对象,而只需将日期字符串列表转换为月份数字列表,例如"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()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4535 次 |
| 最近记录: |