Python中如何用matplotlib实现多数据同一张图显示(多坐标轴)

https://imgchr.com/i/ZcgGCt 效果如图
Python中如何用matplotlib实现多数据同一张图显示(多坐标轴)

4 回复

用matplotlib实现多坐标轴显示,核心是twinx()twiny()方法。下面给个完整示例:

import matplotlib.pyplot as plt
import numpy as np

# 生成示例数据
x = np.linspace(0, 10, 100)
y1 = np.sin(x)  # 第一个数据集
y2 = np.exp(x/5) * 1000  # 第二个数据集,数值范围不同

# 创建图形和第一个坐标轴
fig, ax1 = plt.subplots(figsize=(10, 6))

# 在第一个坐标轴上绘制第一条曲线(左侧y轴)
line1, = ax1.plot(x, y1, 'b-', label='sin(x)')
ax1.set_xlabel('X轴')
ax1.set_ylabel('sin(x)', color='b')
ax1.tick_params(axis='y', labelcolor='b')

# 创建第二个坐标轴,共享x轴
ax2 = ax1.twinx()

# 在第二个坐标轴上绘制第二条曲线(右侧y轴)
line2, = ax2.plot(x, y2, 'r-', label='exp(x/5)*1000')
ax2.set_ylabel('exp(x/5)*1000', color='r')
ax2.tick_params(axis='y', labelcolor='r')

# 合并图例
lines = [line1, line2]
labels = [line.get_label() for line in lines]
ax1.legend(lines, labels, loc='upper left')

plt.title('多坐标轴示例')
plt.tight_layout()
plt.show()

这个代码创建了两个共享x轴但y轴独立的坐标系。ax1.twinx()是关键,它创建了一个与ax1共享x轴的新坐标轴,但有自己的y轴。如果需要共享y轴但x轴独立,就用twiny()

如果要显示更多坐标轴,可以继续调用twinx(),但要注意颜色区分和布局清晰。

总结:用twinx()创建共享x轴的多y轴图表。

更新到 3.1,有相对比较优雅的实现 ax.secondary_xaxis,不过还是比较鸡肋。

之前的做法本质是画多个重叠的图,隐藏掉多余的元素

感谢。

回到顶部