Matplotlib 如何在图表中制作自定义图例

Matplotlib 如何在图表中制作自定义图例

阅读更多:Matplotlib 教程

简介

Matplotlib 是一种基于 Python 的绘图库,它提供了丰富的绘图功能,可以制作各种样式的图表。在 Matplotlib 中,图例是一个非常重要的组成部分,可以使得图表更加易于理解和解释。Matplotlib 提供了很多图例类型供使用,包括默认的图例和自定义的图例。

本篇文章主要介绍如何在 Matplotlib 中制作自定义图例,包括创建自定义的图例对象和将自定义的图例添加到绘图中。

创建自定义的图例对象

在 Matplotlib 中创建自定义的图例对象可以通过以下两种方式实现:

1. 使用 Line2D 对象创建自定义图例

我们可以使用 Line2D 对象创建自定义的图例,Line2D 是一个可接受多种类型参数的 Artist 对象,包括颜色、线型、点型等。下面是一个示例:

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)

plt.plot(x, y1, color='blue', linestyle='-', label='sin(x)')
plt.plot(x, y2, color='red', linestyle='--', label='cos(x)')

line1 = plt.Line2D([0], [0], color='blue', linestyle='-', lw=2)
line2 = plt.Line2D([0], [0], color='red', linestyle='--', lw=2)

plt.legend(handles=[line1, line2], labels=['sin(x)', 'cos(x)'])

plt.show()

上述代码中,我们先绘制了两个函数 sin(x) 和 cos(x),并在每个 plot 函数中设置了颜色、线型和标签。然后,我们将这两个线条分别存储为 line1 和 line2 两个 Line2D 对象,并使用 plt.legend 函数来绘制图例。

2. 使用 Patch 对象创建自定义图例

Matplotlib 也可以使用其他不同的 Artist 对象来创建自定义图例,例如 Patch 对象,这里我们展示一个使用 Rectangle 对象来创建自定义图例的示例:

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)

plt.plot(x, y1, color='blue', linestyle='-', label='sin(x)')
plt.plot(x, y2, color='red', linestyle='--', label='cos(x)')

rect1 = plt.Rectangle((0, 0), 1, 1, fc='blue', ec='black', lw=2)
rect2 = plt.Rectangle((0, 0), 1, 1, fc='red', ec='black', lw=2)

plt.legend(handles=[rect1, rect2], labels=['sin(x)', 'cos(x)'])

plt.show()

上述代码中,我们将两个 Rectangle 对象分别存储为 rect1 和 rect2,其中每个对象的位置和颜色用于表示相应的 sin(x) 和 cos(x) 数据。然后,我们将它们传递给 plt.legend 函数来绘制一个自定义的图例。

将自定义的图例添加到绘图中

创建自定义的图例对象后,我们可以将它们添加到 Matplotlib 绘图中。这里有两种方式实现:

1. 在 plt.plot 函数中使用 label 参数

我们可以在 plt.plot 函数中使用 label 参数来绘制每个图像,并在 plt.legend 函数中传递这些图像的 label 和对应的 Artist 对象来创建一个自定义的图例,例如:

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)

sin_plot, = plt.plot(x, y1, color='blue', linestyle='-', label='sin(x)')
cos_plot, = plt.plot(x, y2, color='red', linestyle='--', label='cos(x)')

plt.legend(handles=[sin_plot, cos_plot])

plt.show()

在上述代码中,我们在 plt.plot 函数中使用了 label 参数,并将每个线条的返回值分别存储在 sin_plot 和 cos_plot 变量中。然后,我们将这些变量传递给 plt.legend 函数来创建自定义的图例。

2. 使用 plt.legend 函数中的 handles 和 labels 参数

除了在 plt.plot 函数中使用 label 参数外,我们还可以使用 plt.legend 函数的 handles 和 labels 参数来手动指定 Artist 对象和标签。例如:

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)

sin_line = plt.Line2D([0], [0], color='blue', linestyle='-', lw=2)
cos_line = plt.Line2D([0], [0], color='red', linestyle='--', lw=2)

plt.plot(x, y1, color='blue', linestyle='-', label='sin(x)')
plt.plot(x, y2, color='red', linestyle='--', label='cos(x)')

plt.legend(handles=[sin_line, cos_line], labels=['sin(x)', 'cos(x)'])

plt.show()

在上述代码中,我们先创建了两个 Line2D 对象,并将其分别存储在 sin_line 和 cos_line 变量中。然后,我们再绘制 sin(x) 和 cos(x) 函数,并且将图例的 handles 和 labels 参数设置为我们之前创建的两个 Line2D 对象和相应的标签。

总结

本篇文章介绍了如何在 Matplotlib 中制作自定义图例。我们可以使用 Line2D 或其他 Artist 对象来创建自定义的图例对象,并使用 plt.legend 函数在我们的图表中添加它们。在 plt.plot 函数中使用 label 参数或者在 plt.legend 函数中使用 handles 和 labels 参数,都可以帮助我们快速方便地创建自定义的图例。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程