matplotlib 双x轴双y轴 多条曲线
时间: 2023-08-13 21:33:14 浏览: 135
好的,我可以帮你解决这个问题。你可以使用 matplotlib 的 `twinx()` 和 `twiny()` 方法来创建第二个 x 轴和 y 轴,并使用 `plot()` 方法画出多条曲线。
下面是一个例子:
```python
import matplotlib.pyplot as plt
import numpy as np
# 生成数据
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)
y3 = np.tan(x)
# 创建图像对象和第一个坐标轴
fig, ax1 = plt.subplots()
# 画第一条曲线
ax1.plot(x, y1, color='r', label='sin')
# 设置第一个坐标轴的标签和颜色
ax1.set_xlabel('x')
ax1.set_ylabel('sin(x)', color='r')
ax1.tick_params(axis='y', labelcolor='r')
# 创建第二个坐标轴
ax2 = ax1.twinx()
# 画第二条曲线
ax2.plot(x, y2, color='g', label='cos')
# 设置第二个坐标轴的标签和颜色
ax2.set_ylabel('cos(x)', color='g')
ax2.tick_params(axis='y', labelcolor='g')
# 创建第三个坐标轴
ax3 = ax1.twiny()
# 画第三条曲线
ax3.plot(x, y3, color='b', label='tan')
# 设置第三个坐标轴的标签和颜色
ax3.set_xlabel('tan(x)', color='b')
ax3.tick_params(axis='x', labelcolor='b')
# 添加图例
lines, labels = ax1.get_legend_handles_labels()
lines2, labels2 = ax2.get_legend_handles_labels()
lines3, labels3 = ax3.get_legend_handles_labels()
ax3.legend(lines + lines2 + lines3, labels + labels2 + labels3, loc='best')
# 显示图像
plt.show()
```
在这个例子中,我们创建了一个图像对象 `fig` 和一个坐标轴对象 `ax1`,然后使用 `plot()` 方法画出第一条曲线。接着,我们使用 `twinx()` 方法创建了第二个 y 轴,并使用 `plot()` 方法画出第二条曲线。最后,我们使用 `twiny()` 方法创建了第二个 x 轴,并使用 `plot()` 方法画出第三条曲线。
注意,我们需要分别设置每个坐标轴的标签和颜色,并使用 `tick_params()` 方法设置每个坐标轴的刻度标签颜色。同时,我们需要使用 `get_legend_handles_labels()` 方法获取每个坐标轴的图例,并使用 `legend()` 方法将它们合并在一起。
希望这个例子能够帮助你画出多条曲线的双 x 轴双 y 轴图像。
阅读全文