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

如何在subplot_mosaic中添加并使用次Y轴?

在Matplotlib的subplot_mosaic中添加双Y轴

你需要的其实是twinx()方法,这才是对应pandas里secondary_y=True的功能,secondary_yaxis更适合做刻度转换(比如单位换算),不是用来关联独立数据集的。

直接修改你的代码就行:

import matplotlib.pyplot as plt

fig = plt.figure(layout='constrained')
ax_dict = fig.subplot_mosaic("""A.B
                                CCC
                                CCC
                                DDD""")

# 获取子图C的主轴
ax_c = ax_dict['C']
# 创建共享X轴的次Y轴
ax_c2 = ax_c.twinx()

# 在主轴绘制第一个数据集
line1, = ax_c.plot([1,2,3],[1,2,3], color='blue', label='数据集1')
# 在次轴绘制第二个数据集
line2, = ax_c2.plot([1,2,3],[200,190,180], color='red', label='数据集2')

# 合并图例(可选,让两个系列的图例显示在一起)
ax_c.legend(handles=[line1, line2], loc='upper left')

# 设置轴标签,区分两个Y轴
ax_c.set_ylabel('数据集1刻度')
ax_c2.set_ylabel('数据集2刻度')

plt.show()

关键说明:

  • twinx()会创建一个和原X轴完全对齐的新Y轴,两个轴的绘图数据完全独立,正好解决你两个数据集数值差异大的问题
  • 如果你需要调整次轴的样式(比如颜色),可以直接对ax_c2操作,比如ax_c2.spines['right'].set_color('red')让轴和折线颜色对应
  • 这种方式完全兼容subplot_mosaic的布局,导出PDF也不会有任何问题,和普通子图的双Y轴逻辑一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 10:40:57