matplotlib 合并图例
时间: 2023-11-13 15:58:13 浏览: 137
在使用matplotlib绘制图形时,有时候需要在同一张图上绘制多个曲线,并将它们的图例合并在一起。这时可以使用get_legend_handles_labels()方法获取每个曲线的图例句柄和标签,然后将它们合并在一起,最后使用legend()方法将合并后的图例添加到图形中。
具体步骤如下:
1. 在绘制每个曲线时,使用label参数为每个曲线添加标签。
2. 在绘制完所有曲线后,使用get_legend_handles_labels()方法获取每个曲线的图例句柄和标签。
3. 将获取到的图例句柄和标签合并在一起。
4. 使用legend()方法将合并后的图例添加到图形中。
下面是一个示例代码:
import numpy as np
import matplotlib.pyplot as plt
# 创建数据
x = np.linspace(0, 2*np.pi, 100)
y1 = np.sin(x)
y2 = np.cos(x) + 1
# 创建图形对象和左右两个坐标轴对象
fig, ax1 = plt.subplots()
ax2 = ax1.twinx()
# 在左边的坐标轴上绘制sin曲线
ax1.plot(x, y1, label='sin(x)', color='blue')
ax1.set_ylabel('y1', color='blue')
ax1.tick_params(axis='y', labelcolor='blue')
# 在右边的坐标轴上绘制cos曲线
ax2.plot(x, y2, label='cos(x) + 1', color='red')
ax2.set_ylabel('y2', color='red')
ax2.tick_params(axis='y', labelcolor='red')
# 设置x轴标签和标题
ax1.set_xlabel('x')
plt.title('Two Y-Axes Plot')
# 合并图例
handles1, labels1 = ax1.get_legend_handles_labels()
handles2, labels2 = ax2.get_legend_handles_labels()
ax1.legend(handles1 + handles2, labels1 + labels2)
# 显示图形
plt.show()
--相关问题--:
1. 如何在matplotlib中绘制多个曲线?
2. 如何在matplotlib中设置坐标轴标签和标题?
3.
阅读全文