编写自定义图例

Beginner

This tutorial is from open-source community. Access the source code

简介

Python 的 Matplotlib 库提供了一种灵活的方式来在绘图中创建和自定义图例。图例是任何绘图的重要组成部分,因为它们对绘图中表示的数据提供了清晰简洁的解释。本实验将指导你完成使用 Matplotlib 对象编写自定义图例的过程。

虚拟机使用提示

虚拟机启动完成后,点击左上角切换到“笔记本”标签以访问 Jupyter Notebook 进行练习。

有时,你可能需要等待几秒钟让 Jupyter Notebook 完成加载。由于 Jupyter Notebook 的限制,操作验证无法自动化。

如果你在学习过程中遇到问题,随时向 Labby 提问。课程结束后提供反馈,我们会立即为你解决问题。

绘制线条

在这一步中,我们将使用 Matplotlib 库绘制一组线条。首先,我们使用 NumPy 创建一些随机数据。接下来,我们使用 cycler 函数设置颜色循环以指定颜色映射。最后,我们使用 plot 函数绘制数据,并调用 legend() 生成图例。

import matplotlib.pyplot as plt
import numpy as np

## 设置随机种子以确保可重复性
np.random.seed(19680801)

## 创建随机数据
N = 10
data = (np.geomspace(1, 10, 100) + np.random.randn(N, 100)).T

## 设置颜色循环
cmap = plt.cm.coolwarm
plt.rcParams['axes.prop_cycle'] = cycler(color=cmap(np.linspace(0, 1, N)))

## 绘制数据并生成图例
fig, ax = plt.subplots()
lines = ax.plot(data)
ax.legend()

编写自定义图例

在这一步中,我们将使用 Matplotlib 对象创建一个自定义图例。首先,我们从 matplotlib.lines 模块中导入 Line2D 类。接下来,我们创建一个包含 Line2D 对象的列表,并为其设置自定义的颜色、宽度和标签属性。最后,我们再次使用 plot 函数绘制数据,并使用自定义线条和相应标签调用 legend()

## 导入 Line2D 类
from matplotlib.lines import Line2D

## 创建自定义线条
custom_lines = [Line2D([0], [0], color=cmap(0.), lw=4),
                Line2D([0], [0], color=cmap(.5), lw=4),
                Line2D([0], [0], color=cmap(1.), lw=4)]

## 绘制数据并生成自定义图例
fig, ax = plt.subplots()
lines = ax.plot(data)
ax.legend(custom_lines, ['Cold', 'Medium', 'Hot'])

使用不同的 Matplotlib 对象编写自定义图例

在这一步中,我们将使用不同的 Matplotlib 对象(包括Line2DPatch)创建一个自定义图例。首先,我们从matplotlib.patches模块中导入Patch类。接下来,我们创建一个具有自定义属性的Line2DPatch对象列表。最后,我们使用这些自定义对象和相应的标签调用legend()

## 导入 Line2D 和 Patch 类
from matplotlib.lines import Line2D
from matplotlib.patches import Patch

## 创建图例元素
legend_elements = [Line2D([0], [0], color='b', lw=4, label='Line'),
                   Line2D([0], [0], marker='o', color='w', label='Scatter',
                          markerfacecolor='g', markersize=15),
                   Patch(facecolor='orange', edgecolor='r',
                         label='Color Patch')]

## 绘制数据并生成自定义图例
fig, ax = plt.subplots()
ax.legend(handles=legend_elements, loc='center')

总结

在本实验中,我们学习了如何使用 Matplotlib 对象创建自定义图例。我们首先绘制了一组线条并生成了默认图例。接下来,我们使用具有自定义属性的 Line2D 对象编写了一个自定义图例。最后,我们使用不同的 Matplotlib 对象(包括 Line2DPatch)创建了一个自定义图例。通过使用自定义图例,我们可以对绘图中表示的数据提供清晰简洁的解释。