为数据可视化自定义 Matplotlib 标记

Beginner

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

简介

在本实验中,我们将探索使用 Python Matplotlib 指定标记的不同方法。标记用于表示图表上的点,可以通过各种方式进行自定义以增强数据可视化效果。

虚拟机使用提示

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

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

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

导入库并设置随机种子

我们将首先导入必要的库并设置随机种子,以确保结果的可重复性。

import matplotlib.pyplot as plt
import numpy as np

## Set random seed
np.random.seed(19680801)

生成随机数据

我们将使用 NumPy 的 random 模块生成随机数据。

x = np.random.rand(10)
y = np.random.rand(10)
z = np.sqrt(x**2 + y**2)

创建子图

我们将使用 subplots() 函数创建一个 2x3 的子图网格。

fig, axs = plt.subplots(2, 3, sharex=True, sharey=True, layout="constrained")

自定义标记

我们将通过以下方式自定义标记:

方法一:Matplotlib 标记符号

我们将使用 marker 参数来指定一个 Matplotlib 标记符号。

axs[0, 0].scatter(x, y, s=80, c=z, marker=">")
axs[0, 0].set_title("marker='>'")
方法二:来自 TeX 的标记

我们将使用 marker 参数,通过在 $ 符号中括住一个 TeX 符号名称来指定一个来自 TeX 的标记。

axs[0, 1].scatter(x, y, s=80, c=z, marker=r"$\clubsuit$")
axs[0, 1].set_title(r"marker=r'\$\clubsuit\$'")
方法三:来自路径的标记

我们将使用 marker 参数,通过一个 (N, 2) 数组形式指定一个由 N 个顶点组成的自定义路径。

verts = [[-1, -1], [1, -1], [1, 1], [-1, -1]]
axs[0, 2].scatter(x, y, s=80, c=z, marker=verts)
axs[0, 2].set_title("marker=verts")
方法四:正多边形标记

我们将使用 marker 参数,通过一个元组 (N, 0) 指定一个正多边形标记。

axs[1, 0].scatter(x, y, s=80, c=z, marker=(5, 0))
axs[1, 0].set_title("marker=(5, 0)")
方法五:正星形标记

我们将使用 marker 参数,通过一个元组 (N, 1) 指定一个正星形标记。

axs[1, 1].scatter(x, y, s=80, c=z, marker=(5, 1))
axs[1, 1].set_title("marker=(5, 1)")
方法六:正星号标记

我们将使用 marker 参数,通过一个元组 (N, 2) 指定一个正星号标记。

axs[1, 2].scatter(x, y, s=80, c=z, marker=(5, 2))
axs[1, 2].set_title("marker=(5, 2)")

显示图表

我们将使用 show() 函数来显示图表。

plt.show()

总结

在本实验中,我们学习了在 Python 的 Matplotlib 中自定义标记的不同方法。我们探索了各种指定标记的方法,并通过代码示例展示了它们的用法。通过自定义标记,我们可以增强数据图的视觉吸引力,并使其更具信息性。