我想用几个月来绘制堆积的年度线图 . 我有一个数据帧df_year如下:
Day Number of Bicycle Hires
2010-07-30 6897
2010-07-31 5564
2010-08-01 4303
2010-08-02 6642
2010-08-03 7966
指数设定为2010年7月至2017年7月的日期
我想绘制每年的折线图,xaxis是从1月到12月的月份,只绘制每月的总和
我通过将数据帧转换为数据透视表来实现此目的,如下所示:
pt = pd.pivot_table(df_year, index=df_year.index.month, columns=df_year.index.year, aggfunc='sum')
这将创建如下所示的数据透视表,我可以在附图中显示:
Number of Bicycle Hires 2010 2011 2012 2013 2014
1 NaN 403178.0 494325.0 565589.0 493870.0
2 NaN 398292.0 481826.0 516588.0 522940.0
3 NaN 556155.0 818209.0 504611.0 757864.0
4 NaN 673639.0 649473.0 658230.0 805571.0
5 NaN 722072.0 926952.0 749934.0 890709.0
在xaxis上显示每月数据的图表
唯一的问题是月份显示为整数,我希望它们显示为1月,2月...... 12月,每行代表一年 . 我无法每年添加一个传奇 .
我尝试了以下代码来实现此目的:
dims = (15,5)
fig, ax = plt.subplots(figsize=dims)
ax.plot(pt)
months = MonthLocator(range(1, 13), bymonthday=1, interval=1)
monthsFmt = DateFormatter("%b '%y")
ax.xaxis.set_major_locator(months) #adding this makes the month ints disapper
ax.xaxis.set_major_formatter(monthsFmt)
handles, labels = ax.get_legend_handles_labels() #legend is nowhere on the plot
ax.legend(handles, labels)
请允许任何人帮我解决这个问题,我在这里做错了什么?
谢谢!
1 回答
您的图例句柄和标签中没有任何内容,而
DateFormatter
并未返回正确的值,因为它们不是您翻译的对象 .您可以专门为日期设置索引,然后删除由
pivot
('0')创建的多索引列级别,然后在设置x轴上需要的位置时使用显式滴答标记 . 如下: