Matplotlib不同量级数值双折线图叠加独立坐标轴绘制问题
实现方法
核心是调用matplotlib坐标轴对象的twinx()方法,生成共享X轴、独立Y轴的第二个坐标系,分别绑定两组不同量级的数据即可,完整实现代码如下:
import matplotlib.pyplot as plt data_1 = [1, 10, 30, 4, 50] data_2 = [1000, 1020, 1050, 1300] # 创建主坐标系(绑定左侧Y轴) fig, ax1 = plt.subplots() # 绘制第一组数据 line1 = ax1.plot(data_1, color='tab:blue', label='data_1') # 配置左侧Y轴样式 ax1.set_ylabel('data_1 数值', color='tab:blue') ax1.tick_params(axis='y', labelcolor='tab:blue') # 创建共享X轴的第二坐标系(绑定右侧Y轴) ax2 = ax1.twinx() # 绘制第二组数据 line2 = ax2.plot(data_2, color='tab:orange', label='data_2') # 配置右侧Y轴样式 ax2.set_ylabel('data_2 数值', color='tab:orange') ax2.tick_params(axis='y', labelcolor='tab:orange') # 合并两个坐标系的图例展示 lines = line1 + line2 labels = [line.get_label() for line in lines] ax1.legend(lines, labels) plt.show()
补充说明:
- 两个Y轴会自动适配对应数据的数值范围,小量级数据不会被压缩
- 可自行修改color参数调整折线、坐标轴的配色,方便区分两组数据
- 合并图例的代码可按需删除,不需要合并图例可以直接分别调用
ax1.legend()和ax2.legend()
内容的提问来源于stack exchange,提问作者john
相关产品推荐
相关产品推荐

