创建定制的 3D 表面图

PythonPythonBeginner
立即练习

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

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

简介

在本实验中,我们将学习如何使用 Python Matplotlib 库创建带有棋盘图案的 3D 表面图。我们将创建一个 3D 表面图,自定义表面的颜色,并调整 z 轴的范围。

虚拟机提示

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

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

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

导入所需库

在这一步中,我们将导入所需的库,其中包括 matplotlib.pyplotnumpy 以及 matplotlib.ticker 中的 LinearLocator

import matplotlib.pyplot as plt
import numpy as np
from matplotlib.ticker import LinearLocator

创建表面图的数据

在这一步中,我们将创建表面图的数据。我们将创建 X 和 Y 值的网格,计算径向距离 R,并使用 np.sin() 根据 R 值计算 Z 值。

## 创建表面图的数据
X = np.arange(-5, 5, 0.25)
xlen = len(X)
Y = np.arange(-5, 5, 0.25)
ylen = len(Y)
X, Y = np.meshgrid(X, Y)
R = np.sqrt(X**2 + Y**2)
Z = np.sin(R)

为表面图创建颜色

在这一步中,我们将为表面图创建颜色。我们将创建一个与网格形状相同的空字符串数组,并用两种颜色以棋盘图案填充它。

## 为表面图创建颜色
colortuple = ('y', 'b')
colors = np.empty(X.shape, dtype=str)
for y in range(ylen):
    for x in range(xlen):
        colors[y, x] = colortuple[(x + y) % len(colortuple)]

创建表面图

在这一步中,我们将使用取自我们创建的数组的面颜色来创建表面图。我们还将自定义 z 轴。

## 创建表面图
fig = plt.figure()
ax = fig.gca(projection='3d')
surf = ax.plot_surface(X, Y, Z, facecolors=colors, linewidth=0)

## 自定义 z 轴
ax.set_zlim(-1, 1)
ax.zaxis.set_major_locator(LinearLocator(6))

## 显示图形
plt.show()

总结

在本实验中,我们学习了如何使用 Python 的 Matplotlib 库创建具有棋盘图案的 3D 表面图。我们学习了如何为表面图创建数据、为表面图创建颜色、创建表面图以及自定义 z 轴。这些知识可应用于为不同应用创建各种类型的 3D 表面图。