在 3D 绘图上绘制 Matplotlib 2D 数据

PythonPythonBeginner
立即练习

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

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

简介

本实验展示了如何使用 ax.plotzdir 关键字在 3D 绘图的选定轴上绘制 2D 数据。Python 中的 matplotlib 库用于创建 3D 绘图。

虚拟机使用提示

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

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

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

导入库

第一步是导入必要的库。我们需要 matplotlibnumpy 来绘制 3D 图形。

import matplotlib.pyplot as plt
import numpy as np

创建一个 3D 绘图

第二步是使用 ax = plt.figure().add_subplot(projection='3d') 创建一个 3D 绘图。

ax = plt.figure().add_subplot(projection='3d')

在 3D 绘图上绘制 2D 数据

第三步是使用 ax.plotax.scatter 在 3D 绘图上绘制 2D 数据。ax.plot 函数使用 x 轴和 y 轴绘制一条正弦曲线。ax.scatter 函数在 x 轴和 z 轴上绘制散点图数据。

## 使用 x 轴和 y 轴绘制一条正弦曲线。
x = np.linspace(0, 1, 100)
y = np.sin(x * 2 * np.pi) / 2 + 0.5
ax.plot(x, y, zs=0, zdir='z', label='curve in (x, y)')

## 在 x 轴和 z 轴上绘制散点图数据(每种颜色 20 个二维点)。
颜色 = ('r', 'g', 'b', 'k')

## 为了可重复性固定随机状态
np.random.seed(19680801)

x = np.random.sample(20 * len(颜色))
y = np.random.sample(20 * len(颜色))
c_list = []
for c in 颜色:
    c_list.extend([c] * 20)
## 通过使用 zdir='y',这些点的 y 值被固定为 zs 值 0
## 并且 (x, y) 点被绘制在 x 轴和 z 轴上。
ax.scatter(x, y, zs=0, zdir='y', c=c_list, label='points in (x, z)')

自定义绘图

第四步是通过添加图例、设置坐标轴范围和标签以及更改视角来自定义绘图。

## 添加图例,设置坐标轴范围和标签
ax.legend()
ax.set_xlim(0, 1)
ax.set_ylim(0, 1)
ax.set_zlim(0, 1)
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')

## 自定义视角,以便更清楚地看到散点位于
## 平面 y=0 上
ax.view_init(elev=20., azim=-35, roll=0)

plt.show()

查看绘图

最后一步是通过运行代码来查看 3D 绘图。

总结

在这个实验中,我们学习了如何使用 ax.plotzdir 关键字在 3D 绘图的选定轴上绘制 2D 数据。我们还学习了如何通过添加图例、设置坐标轴范围和标签以及更改视角来自定义绘图。