Matplotlib下Pandas绘图仅保留箱线图x轴标签隐藏其他标签的问题
问题原因
你调用df_median.plot时传入了ax=axes[0]参数,此时方法返回的a和axes[0]是完全相同的坐标轴对象,你对a.xaxis执行隐藏操作,等于直接关闭了整个坐标轴的x轴显示,自然所有标签都被移除。你需要实现的不是隐藏整个x轴,而是避免第二个绘图操作覆盖箱线图已经生成的x轴配置。
解决方法
两种实现方案可选:
方案1:绘图时直接禁用折线图的x轴生成逻辑
绘制折线图时通过参数指定不生成x轴刻度和标签,不会影响已有的箱线图x轴配置:
df.boxplot(column=['vals'], by='date', ax=axes[0], rot=45, showfliers=False, showmeans=True, whis=0) axes[0].axhline(y=df.vals.mean(), color='r', linestyle='-') # 新增xticks和xlabel参数,禁止折线图生成x轴相关内容 df_median.plot( y='vals', ax=axes[0], label='7 day', xticks=[], xlabel='' )
方案2:备份恢复箱线图的x轴配置(兼容性更强)
如果方案1因为pandas版本差异不生效,可以先保存箱线图的x轴配置,绘制完折线图后再恢复:
# 绘制箱线图 df.boxplot(column=['vals'], by='date', ax=axes[0], rot=45, showfliers=False, showmeans=True, whis=0) axes[0].axhline(y=df.vals.mean(), color='r', linestyle='-') # 备份箱线图x轴配置 x_lim = axes[0].get_xlim() x_ticks = axes[0].get_xticks() x_ticklabels = axes[0].get_xticklabels() # 绘制折线图 df_median.plot(y='vals', ax=axes[0], label='7 day') # 恢复箱线图的x轴配置 axes[0].set_xlim(x_lim) axes[0].set_xticks(x_ticks) axes[0].set_xticklabels(x_ticklabels, rotation=45) axes[0].set_xlabel('')
内容的提问来源于stack exchange,提问作者A1122
相关产品推荐
相关产品推荐

