You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何设置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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 23:45:04