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

Matplotlib双轴图表X轴标签旋转90度失效问题求助

解决Matplotlib双轴图表X轴标签旋转失效问题

问题根源在于双轴图表中,全局plt.xticks()的作用对象会切换到twinx()创建的ax2轴,但ax2的X轴是与ax1共享的隐藏轴,直接调用全局方法无法对实际显示的X轴(属于ax1)生效。

修复方案

提供两种可靠的修复方式:

方式1:设置刻度时直接指定旋转角度

将原本分开的两行X轴刻度代码合并,在plt.xticks()中直接添加旋转参数:

plt.xticks(np.arange(min(rok), max(rok)+1), rotation=90)

方式2:直接操作ax1的X轴刻度属性

因为X轴本质属于ax1,直接针对ax1设置刻度旋转更精准:

ax1.set_xticks(np.arange(min(rok), max(rok)+1))
ax1.tick_params(axis='x', rotation=90)

修改后的完整代码

%matplotlib inline
fig, ax1 = plt.subplots()

color = 'tab:red'
ax1.set_xlabel('Rok')
ax1.set_ylabel('Liczba loch', color=color)
ax1.plot(rok, lochy, color=color, marker="D")
ax1.tick_params(axis='y', labelcolor=color)
ax2 = ax1.twinx()

color = 'tab:blue'
ax2.set_ylabel('Liczba knurów', color=color)
ax2.plot(rok, knury, color=color, marker="o")
ax2.tick_params(axis='y', labelcolor=color)
plt.title(f"Liczba użytkowanych knurów i loch w województwie {wojewodztwo}, w stadzie {stado} na przestrzeni lat")
plt.grid()
fig.tight_layout()  # 避免右侧Y轴标签被截断
# 使用方式1的写法设置带旋转的X轴刻度
plt.xticks(np.arange(min(rok), max(rok)+1), rotation=90)
plt.savefig('wykres.png', dpi=300, bbox_inches='tight')

原理:双轴场景下,plt全局函数默认作用于最后创建的轴(此处为ax2),但ax2的X轴是隐藏状态,实际显示的X轴归属于ax1。直接操作ax1或在设置刻度时明确指定旋转角度,才能让X轴标签正确旋转90度。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 18:52:38