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

使用Pandas绘制共享轴子图时部分坐标轴标签丢失如何解决?

问题原因

当你使用sharey=True创建子图时,Matplotlib默认会关闭所有非最左列子图的左侧Y轴刻度、标签的显示,避免刻度重复展示。你调用set_ylabel仅修改了第二个子图的标签内容,但标签的可见状态默认是关闭的,因此不会显示。

解决方法

方法1:手动打开第二个子图的Y轴标签显示

仅需加一行代码开启第二个子图的左侧Y轴标签显示权限即可,保留sharey的自动同步刻度能力:

import matplotlib.pyplot as plt
import pandas as pd
fig, axes = plt.subplots(1, 2, sharey=True, sharex=True)
pd.DataFrame([1,2,3]).plot(ax=axes[0])
pd.DataFrame([3,2,1]).plot(ax=axes[1])
axes[0].set_ylabel('ylabel-1')
axes[1].set_ylabel('ylabel-2')
# 新增:开启第二个子图左侧Y轴标签的显示
axes[1].yaxis.set_tick_params(labelleft=True)
plt.tight_layout()

方法2:手动同步Y轴范围,不使用sharey参数

如果需要控制的子图数量较多,也可以不开启sharey,手动同步两个子图的Y轴范围,默认状态下两个子图的Y轴标签都会正常显示:

import matplotlib.pyplot as plt
import pandas as pd
# 不指定sharey参数
fig, axes = plt.subplots(1, 2, sharex=True)
pd.DataFrame([1,2,3]).plot(ax=axes[0])
pd.DataFrame([3,2,1]).plot(ax=axes[1])
# 手动同步Y轴范围,实现和sharey一致的刻度效果
axes[1].set_ylim(axes[0].get_ylim())
axes[0].set_ylabel('ylabel-1')
axes[1].set_ylabel('ylabel-2')
plt.tight_layout()

内容的提问来源于stack exchange,提问作者blaylockbk

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 06:45:04