当需要在一个图中,将两个或以上的不同的 Y 轴进行同步展示时,可以借助 Matplotlib
库实现。以下是实现方法的完整攻略。
1. 导入 Matplotlib 库
import matplotlib.pyplot as plt
2. 新建画布和子图
figsize
参数用于设置画布的大小constrained_layout
参数可以使图表自动调整大小,防止子图间互相重叠
fig, ax1 = plt.subplots(figsize=(8,6),constrained_layout=True)
3. 添加第一个 Y 轴
ax1.set_ylabel('y1', fontsize=16)
4. 添加第二个 Y 轴
ax2 = ax1.twinx()
ax2.set_ylabel('y2', fontsize=16)
5. 绘制第一个 Y 轴对应的曲线
ax1.plot(x, y1, label='y1_label')
6. 绘制第二个 Y 轴对应的曲线
ax2.plot(x, y2, label='y2_label')
7. 添加图例
ax1.legend(loc='upper left')
ax2.legend(loc='upper right')
下面是两条具体示例:
示例1:双 Y 轴同步显示
import numpy as np
#生成数据
x = np.linspace(0, 10, 1000)
y1 = np.sin(x)
y2 = np.exp(x/10)
#新建画布
fig, ax1 = plt.subplots(figsize=(8,6),constrained_layout=True)
#添加第一个 Y 轴
ax1.set_ylabel('y1', fontsize=16)
#添加第二个 Y 轴
ax2 = ax1.twinx()
ax2.set_ylabel('y2', fontsize=16)
#绘制第一个 Y 轴对应的曲线
ax1.plot(x, y1, label='y1_label')
#绘制第二个 Y 轴对应的曲线
ax2.plot(x, y2, label='y2_label')
#添加图例
ax1.legend(loc='upper left')
ax2.legend(loc='upper right')
#显示图表
plt.show()
示例2:三 Y 轴同步显示
import numpy as np
#生成数据
x = np.linspace(0, 10, 1000)
y1 = np.sin(x)
y2 = np.exp(x/10)
y3 = np.log(x)
#新建画布
fig, ax1 = plt.subplots(figsize=(8,6),constrained_layout=True)
#添加第一个 Y 轴
ax1.set_ylabel('y1', fontsize=16)
#添加第二个 Y 轴
ax2 = ax1.twinx()
ax2.set_ylabel('y2', fontsize=16)
#添加第三个 Y 轴
ax3 = ax1.twinx()
ax3.spines['right'].set_position(('axes', 1.2))
ax3.set_ylabel('y3', fontsize=16)
#绘制第一个 Y 轴对应的曲线
ax1.plot(x, y1, label='y1_label')
#绘制第二个 Y 轴对应的曲线
ax2.plot(x, y2, label='y2_label')
#绘制第三个 Y 轴对应的曲线
ax3.plot(x, y3, label='y3_label', color='green')
#添加图例
ax1.legend(loc='upper left')
ax2.legend(loc='upper right')
ax3.legend(loc='lower right')
#显示图表
plt.show()
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python 用Matplotlib作图中有多个Y轴 - Python技术站