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

Matplotlib多子图中plt.xticks设置仅单图生效问题

问题原因

plt.xticks() 属于Matplotlib的pyplot状态机接口,默认仅对当前处于激活状态的子图生效。你的代码中最后操作的子图是右侧的gr1,因此刻度设置只会应用在gr1上,不会影响更早创建的左侧子图gr0。

解决方法

不要依赖pyplot全局接口做多子图的样式配置,直接调用子图对象自带的方法设置即可,两种常用实现:

  • 少量子图场景:逐个为子图设置x轴刻度样式
fig, (gr0, gr1) = plt.subplots(ncols=2, constrained_layout=True, figsize = (17,7))

# 左子图
gr0.plot(data['g1'])
gr0.set_title('text 1')
gr0.tick_params(axis='x', labelsize=8, rotation=45)

# 右子图
gr1.plot(data['g2'])
gr1.set_title('text 2')
gr1.tick_params(axis='x', labelsize=8, rotation=45)

plt.show()
  • 多子图场景:遍历画布下所有子图批量统一设置,避免重复代码
fig, (gr0, gr1) = plt.subplots(ncols=2, constrained_layout=True, figsize = (17,7))

gr0.plot(data['g1'])
gr0.set_title('text 1')

gr1.plot(data['g2'])
gr1.set_title('text 2')

# 批量给所有子图应用x轴刻度样式
for ax in fig.axes:
    ax.tick_params(axis='x', labelsize=8, rotation=45)

plt.show()

效果参考

运行效果截图

注:使用面向对象的Axes接口配置子图样式,可以完全避开pyplot状态机的激活对象切换问题,样式控制更精准,不会出现部分子图配置不生效的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 08:51:26