python绘制双坐标图,同时要求,绘图不出现交叉覆盖
时间: 2023-08-10 22:32:18 浏览: 217
python绘制双Y轴折线图以及单Y轴双变量柱状图的实例
5星 · 资源好评率100%
当双坐标图中的两条曲线出现交叉覆盖时,我们可以将其中一条曲线的y轴反向,以避免交叉覆盖的问题。以下是一个简单的示例代码:
```python
import matplotlib.pyplot as plt
import numpy as np
# 生成数据
x = np.arange(0, 10, 0.1)
y1 = x**2
y2 = np.exp(x)
# 创建figure对象和两个axes对象
fig, ax1 = plt.subplots()
ax2 = ax1.twinx()
# 在第一个axes上绘制数据
ax1.plot(x, y1, 'r-', label='y1')
ax1.set_xlabel('X Label')
ax1.set_ylabel('y1', color='r')
ax1.tick_params('y', colors='r')
# 在第二个axes上绘制数据
ax2.plot(x, y2, 'b-', label='y2')
ax2.set_ylabel('y2', color='b')
ax2.tick_params('y', colors='b')
# 反向第一个axes的y轴
ax1.invert_yaxis()
# 添加图例
lines1, labels1 = ax1.get_legend_handles_labels()
lines2, labels2 = ax2.get_legend_handles_labels()
ax2.legend(lines1 + lines2, labels1 + labels2, loc='best')
# 显示图形
plt.show()
```
在这个代码中,我们使用了`np.arange()`生成了一组x轴数据以及两组y轴数据(一组是x的平方,一组是e的x次方),然后使用`plt.subplots()`创建了一个包含两个axes对象的figure对象,分别在两个axes上绘制了y1和y2的数据曲线,设置了x轴和y轴的标签和刻度颜色,并且通过`ax1.invert_yaxis()`将第一个axes的y轴反向。最后通过`ax1.legend()`来添加图例。运行代码后,会显示一个包含双坐标的图形窗口,并且两条曲线不会发生交叉覆盖。
阅读全文