Matplotlib.figure绘制具有多个图例的线图
发布时间:2023-12-24 00:24:34
Matplotlib是一个数据可视化库,它提供了丰富的绘图功能。在Matplotlib中,Figure对象是绘制图形的容器,它可以包含多个Axes对象,每个Axes对象可以包含一个或多个图例。
要绘制具有多个图例的线图,首先需要创建一个Figure对象和一个或多个Axes对象。然后,在每个Axes对象中使用plot函数绘制线图,可以通过传递不同的数据和样式参数来绘制不同的线。最后,在每个Axes对象中使用legend方法添加图例。
下面是一个使用Matplotlib绘制具有多个图例的线图的例子。
import numpy as np
import matplotlib.pyplot as plt
# 创建Figure对象和两个Axes对象
fig, ax1 = plt.subplots()
ax2 = ax1.twinx()
# 创建数据
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)
# 在第一个Axes对象中绘制第一条线并添加图例
line1, = ax1.plot(x, y1, color='red', label='sin(x)')
ax1.legend(loc='upper left')
# 在第二个Axes对象中绘制第二条线并添加图例
line2, = ax2.plot(x, y2, color='blue', label='cos(x)')
ax2.legend(loc='upper right')
# 设置标题和坐标轴标签
ax1.set_title("Multiple Legends")
ax1.set_xlabel("x")
ax1.set_ylabel("sin(x)")
ax2.set_ylabel("cos(x)")
# 调整图例的位置
lines = [line1, line2]
labels = [line.get_label() for line in lines]
ax1.legend(lines, labels, loc='upper center')
# 调整第一个Axes对象的坐标轴范围
ax1.set_xlim(0, 10)
ax1.set_ylim(-1, 1)
# 显示图形
plt.show()
在这个例子中,我们首先创建了一个Figure对象和两个Axes对象,其中一个是通过ax1.twinx()方法创建的,以便在同一图形上绘制两条线。然后,我们使用numpy库生成了一些数据,并在每个Axes对象中调用plot函数绘制线图。在每个plot函数的调用中,我们使用不同的样式参数来绘制不同的线,并使用label参数指定了图例的名称。然后,我们在每个Axes对象中调用legend方法添加图例。
在调整图例的位置时,我们可以从每个Axes对象中获取所有线和标签,然后在一个新的图例中使用legend方法指定线和标签的位置。最后,我们使用set_xlim和set_ylim方法设置第一个Axes对象的坐标轴范围,并使用set_title、set_xlabel和set_ylabel方法设置标题和坐标轴标签。
最后,我们调用show方法显示图形。运行这段代码将绘制一个具有多个图例的线图,并在图例上显示每条线的名称。
