legend matplotlib
在matplotlib中,图例(legend)是用来标识不同数据系列的标签,帮助观众理解图表中的数据。在绘制图表时,我们可以通过添加图例来说明图表中每个数据系列所代表的含义。本文将详细介绍matplotlib中如何使用图例,并提供多个示例代码以帮助读者更好地理解。
示例1:简单的折线图示例
我们先通过一个简单的折线图来演示如何添加图例。假设我们有两条折线,分别代表两个数据系列。我们可以使用plt.legend()
函数来添加图例,并使用参数指定图例的标签。
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y1 = [1, 4, 9, 16, 25]
y2 = [1, 2, 3, 4, 5]
plt.plot(x, y1, label='Line 1')
plt.plot(x, y2, label='Line 2')
plt.legend()
plt.show()
Output:
在上面的代码中,我们分别绘制了y1
和y2
两条折线,并使用label
参数为每条折线指定标签。然后调用plt.legend()
函数添加图例。运行上述代码,将会得到一个简单的折线图,两条折线分别用”Line 1″和”Line 2″标记。
示例2:调整图例的位置和大小
有时候图例可能会与数据重叠,或者位置不理想。我们可以通过调整图例的位置和大小来改善图表的可视性。下面是一个调整图例位置和大小的示例代码:
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y1 = [1, 4, 9, 16, 25]
y2 = [1, 2, 3, 4, 5]
plt.plot(x, y1, label='Line 1')
plt.plot(x, y2, label='Line 2')
plt.legend(loc='upper right', fontsize='large')
plt.show()
Output:
在上面的代码中,我们通过在plt.legend()
函数中使用loc
参数指定图例的位置,使用fontsize
参数指定图例的字体大小。运行上述代码,将会得到一个折线图,图例位于右上角,并且字体较大。
示例3:设置图例的标题
有时候我们希望为图例添加一个标题,以便更好地说明各个数据系列的含义。我们可以通过设置title
参数来为图例添加标题。下面是一个设置图例标题的示例代码:
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y1 = [1, 4, 9, 16, 25]
y2 = [1, 2, 3, 4, 5]
plt.plot(x, y1, label='Line 1')
plt.plot(x, y2, label='Line 2')
plt.legend(title='Legend Title')
plt.show()
Output:
在上面的代码中,我们使用plt.legend()
函数的title
参数为图例添加了标题”Legend Title”。运行上述代码,将会得到一个带有图例标题的折线图。
示例4:自定义图例线条样式
除了添加文本标签外,我们还可以自定义图例的线条样式,以便更好地区分不同的数据系列。在plt.legend()
函数中,我们可以通过handlelength
参数控制图例线条的长度,通过handletextpad
参数控制文本标签的间距。下面是一个自定义图例线条样式的示例代码:
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y1 = [1, 4, 9, 16, 25]
y2 = [1, 2, 3, 4, 5]
line1, = plt.plot(x, y1, label='Line 1')
line2, = plt.plot(x, y2, label='Line 2')
plt.legend(handles=[line1, line2], handlelength=2, handletextpad=2)
plt.show()
Output:
在上面的代码中,我们先通过plt.plot()
函数绘制了两条折线,然后将每条折线赋值给变量line1
和line2
。最后在plt.legend()
函数中使用handles
参数传入这两个线条,通过handlelength
和handletextpad
参数自定义图例线条的长度和间距。
示例5:隐藏图例边框
有时候我们可能希望隐藏图例的边框,使图例看起来更加清晰。我们可以通过设置frameon
参数为False
来隐藏图例的边框。下面是一个隐藏图例边框的示例代码:
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y1 = [1, 4, 9, 16, 25]
y2 = [1, 2, 3, 4, 5]
plt.plot(x, y1, label='Line 1')
plt.plot(x, y2, label='Line 2')
plt.legend(frameon=False)
plt.show()
Output:
在上面的代码中,我们在plt.legend()
函数中设置frameon=False
,即可隐藏图例的边框。运行上述代码,将会得到一个没有边框的图例。
示例6:将图例放在外部
有时候我们可能希望将图例放在图表的外部,以节省图表空间。我们可以通过设置bbox_to_anchor
参数来控制图例的位置。下面是一个将图例放在外部的示例代码:
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y1 = [1, 4, 9, 16, 25]
y2 = [1, 2, 3, 4, 5]
plt.plot(x, y1, label='Line 1')
plt.plot(x, y2, label='Line 2')
plt.legend(loc='upper left', bbox_to_anchor=(1, 1))
plt.show()
Output:
在上面的代码中,我们通过设置loc='upper left'
将图例放在左上角,然后通过设置bbox_to_anchor=(1, 1)
将图例移到图表的外部。运行上述代码,将会得到一个将图例放在外部的折线图。
示例7:在散点图中添加图例
除了在折线图中添加图例外,我们还可以在散点图中添加图例,说明不同类别的数据点。下面是一个在散点图中添加图例的示例代码:
import matplotlib.pyplot as plt
import numpy as np
x = np.random.rand(50)
y = np.random.rand(50)
colors = np.random.rand(50)
sizes = 1000 * np.random.rand(50)
plt.scatter(x, y, c=colors, s=sizes, alpha=0.5, label='Data Points')
plt.legend()
plt.show()
Output:
在上面的代码中,我们使用plt.scatter()
函数绘制了一组随机的散点,并设置了颜色、大小和透明度。然后调用plt.legend()
函数添加图例,图例标签为”Data Points”。运行上述代码,将会得到一个带有图例的散点图。
示例8:自定义图例的背景色和边框
除了调整位置和样式外,我们还可以通过设置facecolor
和edgecolor
参数来自定义图例的背景色和边框颜色。下面是一个自定义图例背景色和边框的示例代码:
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y1 = [1, 4, 9, 16, 25]
y2 = [1, 2, 3, 4, 5]
plt.plot(x, y1, label='Line 1')
plt.plot(x, y2, label='Line 2')
plt.legend(facecolor='lightblue', edgecolor='black')
plt.show()
Output:
在上面的代码中,我们在plt.legend()
函数中设置facecolor='lightblue'
和edgecolor='black'
分别表示图例的背景色和边框颜色。运行上述代码,将会得到一个背景色为浅蓝色、边框为黑色的图例。
示例9:同时显示多个图例
有时候我们可能需要在同一个图表中显示多个图例,以说明更多的数据系列。我们可以通过传入多个图例标签给plt.legend()
函数来实现。下面是一个同时显示多个图例的示例代码:
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y1 = [1, 4, 9, 16, 25]
y2 = [1, 2, 3, 4, 5]
plt.plot(x, y1, label='Line 1')
plt.plot(x, y2, label='Line 2')
plt.legend(['Line 1', 'Line 2', 'Extra Line'], loc='lower right')
plt.show()
Output:
在上面的代码中,我们传入一个包含多个图例标签的列表给plt.legend()
函数,同时设置loc='lower right'
将图例放在右下角。运行上述代码,将会得到一个包含多个图例的折线图。
示例10:使用图例标记
除了默认的线条和颜色外,我们还可以使用特殊的图例标记来表示不同的数据系列。可以在plt.legend()
函数中使用marker
参数指定图例标记的样式。下面是一个使用图例标记的示例代码:
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y1 = [1, 4, 9, 16, 25]
y2 = [1, 2, 3, 4, 5]
plt.plot(x, y1, label='Line 1', marker='o')
plt.plot(x, y2, label='Line 2', marker='s')
plt.legend()
plt.show()
Output:
在上面的代码中,我们在plt.plot()
函数中使用marker
参数分别指定了不同的图例标记,'o'
表示圆形,'s'
表示方形。运行上述代码,将会得到一个包含不同图例标记的折线图。
以上是关于如何在matplotlib中使用图例的详细介绍和示例代码。通过本文的讲解,希望读者能更好地理解如何添加和定制图例,使图表更加直观和清晰。