简介
本实验将指导你使用 Python 中的 Matplotlib 库创建 3D 体素图的过程。体素图对于以清晰且美观的方式可视化 3D 数据非常有用。在本实验中,我们将使用 Axes3D.voxels 函数创建两个立方体及其之间连接的体素图。
虚拟机提示
虚拟机启动完成后,点击左上角切换到“笔记本”标签以访问 Jupyter Notebook 进行练习。
有时,你可能需要等待几秒钟让 Jupyter Notebook 完成加载。由于 Jupyter Notebook 的限制,操作验证无法自动化。
如果你在学习过程中遇到问题,随时向 Labby 提问。课程结束后提供反馈,我们将立即为你解决问题。
导入必要的库
首先,我们需要导入必要的库。在这种情况下,我们将使用 Matplotlib 和 NumPy。
import matplotlib.pyplot as plt
import numpy as np
准备坐标
接下来,我们将为体素图准备坐标。我们将使用 NumPy 的 indices 函数创建一个 8x8x8 的点网格。
x, y, z = np.indices((8, 8, 8))
创建立方体和连接部分
现在,我们将创建两个立方体以及它们之间的连接部分。我们通过定义三个布尔数组来实现,这三个布尔数组将被组合成一个单一的布尔数组。前两个数组定义立方体的位置,而第三个数组定义连接部分的位置。
cube1 = (x < 3) & (y < 3) & (z < 3)
cube2 = (x >= 5) & (y >= 5) & (z >= 5)
link = abs(x - y) + abs(y - z) + abs(z - x) <= 2
voxelarray = cube1 | cube2 | link
设置颜色
现在我们将为体素图中的每个对象设置颜色。我们通过创建一个与在步骤 3 中创建的布尔数组形状相同的空数组来实现,然后根据每个对象的位置设置其颜色。
colors = np.empty(voxelarray.shape, dtype=object)
colors[link] = 'red'
colors[cube1] = 'blue'
colors[cube2] = 'green'
绘制体素数组
最后,我们可以使用 Axes3D.voxels 函数来绘制具有指定颜色的体素数组。
ax = plt.figure().add_subplot(projection='3d')
ax.voxels(voxelarray, facecolors=colors, edgecolor='k')
plt.show()
总结
在本实验中,我们学习了如何使用 Python 中的 Matplotlib 库创建三维体素图。我们为该图准备了坐标,创建立方体和连接部分,为每个对象设置颜色,并使用 Axes3D.voxels 函数绘制体素数组。体素图是可视化三维数据的一种有用方式,而 Matplotlib 使创建它们变得很容易。