如何设置barplot的x轴刻度仅展示多级索引的指定单个层级
解决方法
方案1:删除固定层级索引(最简方案)
取数时直接移除已经固定的前两级索引,剩余索引仅保留month,绘图时x轴会自动显示月份标签:
gb_zone_month_mean = df.groupby(by=["hemisphere", "climate_zone", "month"]).mean() zones = [0, 1, 2, 3] # 气候区,对应索引的第2级 varis = variables[3:] # 需要展示的10个变量 idx = pd.IndexSlice fig, ax = plt.subplots(4, 10, figsize=(20, 10)) for z_i in zones: for i, v in zip(range(len(varis)), varis): # 用.droplevel删除固定的前两级索引(0级为hemisphere,1级为climate_zone) gb_zone_month_mean.loc[idx[1, z_i, :], v].droplevel([0,1]).plot(kind="bar", ax=ax[z_i][i]) plt.tight_layout() plt.show()
方案2:手动修改x轴刻度标签
如果不想改动数据源,可以在绘图完成后手动替换刻度标签,仅提取第三级的month内容:
for z_i in zones: for i, v in zip(range(len(varis)), varis): gb_zone_month_mean.loc[idx[1, z_i, :], v].plot(kind="bar", ax=ax[z_i][i]) # 提取每个刻度标签中month部分的内容 month_labels = [tick.get_text().split(',')[-1].strip('() ') for tick in ax[z_i][i].get_xticklabels()] # 重设x轴标签,可调整rotation参数控制标签旋转角度 ax[z_i][i].set_xticklabels(month_labels, rotation=0)
内容的提问来源于stack exchange,提问作者rocksNwaves
相关产品推荐
相关产品推荐

