如何在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
相关产品推荐
相关产品推荐

