使用 Matplotlib 绘制带掩码数据的散点图

PythonPythonBeginner
立即练习

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

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

本教程将指导你使用 Python 的 Matplotlib 库创建一个带有掩码数据点的散点图。我们还将添加一条线来划分掩码区域。

虚拟机提示

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

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

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

导入所需库并设置随机种子

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

import matplotlib.pyplot as plt
import numpy as np

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

生成散点图的数据

接下来,我们生成散点图的数据。我们创建 100 个数据点,其 x 和 y 值在 0 到 0.9 之间随机生成,半径在 0 到 10 之间随机生成。每个数据点的颜色由其面积的平方根决定。

N = 100
r0 = 0.6
x = 0.9 * np.random.rand(N)
y = 0.9 * np.random.rand(N)
area = (20 * np.random.rand(N))**2  ## 0 到 10 的点半径
c = np.sqrt(area)

屏蔽数据点并创建散点图

我们根据数据点到原点的距离来屏蔽它们。距离小于 r0 的数据点在 area1 中被屏蔽,距离大于或等于 r0 的数据点在 area2 中被屏蔽。然后,我们分别为 area1area2 创建一个带有 marker='^'marker='o' 的屏蔽数据点的散点图。

r = np.sqrt(x ** 2 + y ** 2)
area1 = np.ma.masked_where(r < r0, area)
area2 = np.ma.masked_where(r >= r0, area)
plt.scatter(x, y, s=area1, marker='^', c=c)
plt.scatter(x, y, s=area2, marker='o', c=c)

添加一条线来划分屏蔽区域

最后,我们添加一条线来划分屏蔽区域。我们创建一个 theta 值的数组,并使用 np.cos(theta)np.sin(theta) 绘制一个半径为 r0 的圆。

## 显示区域之间的边界:
theta = np.arange(0, np.pi / 2, 0.01)
plt.plot(r0 * np.cos(theta), r0 * np.sin(theta))

显示散点图

我们使用 plt.show() 来显示散点图。

plt.show()

总结

在本教程中,我们学习了如何使用 Python 的 Matplotlib 库创建一个带有屏蔽数据点的散点图。我们还添加了一条线来划分屏蔽区域。我们首先导入必要的库并设置随机种子。接下来,我们生成散点图的数据,并根据数据点到原点的距离对其进行屏蔽。然后,我们创建了屏蔽数据点的散点图,并添加了一条线来划分屏蔽区域。最后,我们显示了散点图。