Matplotlib问题:如何展示含零计数的全部X轴月份标签
解决X轴月份标签与柱状图映射错误的问题
你的问题核心是柱状图的x轴位置和月份索引没有对应:groupby后得到的df_grouped索引是5-11月,但你用range(len(df_grouped))生成x坐标时,会把5月放在x=0的位置,和你设置的0-11的xticks完全错位。
正确的做法是先补全所有12个月的数据(缺失月份填充0),再让柱状图的x轴直接对应月份数值,这样就能完美匹配标签:
修改后的完整代码
# 按月份统计次数 df_grouped = df.departureDate.groupby(df['departureDate'].dt.month).count() # 重新索引为1-12月,缺失月份填充0 df_grouped = df_grouped.reindex(range(1, 13), fill_value=0) # 绘制柱状图 f, (ax1) = plt.subplots(1, figsize=(10,5)) # 用月份索引作为x轴位置,确保每个柱子对应正确的月份标签 ax1.bar(df_grouped.index, df_grouped, alpha=0.5, color='b') # 设置X轴刻度为1-12,显示全部月份 ax1.set_xticks(range(1, 13)) # 可选:给刻度添加月份名称,更直观 ax1.set_xticklabels(['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月'])
关键说明
reindex(range(1,13), fill_value=0):强制生成1到12的索引,没有统计数据的月份自动填充0,保证每个月份都有对应的数据点。- 用
df_grouped.index作为柱状图的x坐标:这样5月的数据会对应x=5的位置,和X轴的5月标签完全对齐,不会再出现错位。
内容的提问来源于stack exchange,提问作者Willy S
相关产品推荐
相关产品推荐

