繁体   English   中英

可视化 1 和 0 的 3d numpy 数组

[英]Visualizing a 3d numpy array of 1's and 0's

好吧,伙计们,我有这个 1 和 0 的 3d 数组,它应该代表一个 3d 对象。 0 表示那里什么都没有。 1 表示对象存在于该坐标中。 我需要在屏幕上显示 3d 对象。 对我来说,拥有一个具有值取决于颜色的离散 3 维图将是理想的选择。 我尝试查看 glumpy 和 vispy,但文档页面现在似乎已关闭。

向 matplotlib提出了一个拉取请求,它就是这样做的,添加了ax3d.voxels函数。 不幸的是,它还没有被完全审查。

更新:这使它成为 matplotlib 2.1

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

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

# your real data here - some 3d boolean array
x, y, z = np.indices((10, 10, 10))
voxels = (x == y) | (y == z)

ax.voxels(voxels)

plt.show()

结果图

使用np.where提取坐标,使用matplotlib提取 3D 绘图。

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

data = np.zeros(shape=(20, 20, 20), dtype=np.bool_)
np.fill_diagonal(data, True)

fig = plt.figure()
Axes3D(fig).plot_wireframe(*np.nonzero(data))
plt.show()

这将根据矩阵中出现的位置绘制基本的 3D 线框。 您可能希望使用plot_surfacescatter代替plot_wireframe 有关更多信息,请参阅文档

能省则X,Y,Z每个“1”点到文件中的坐标,并显示它cloudcomparemeshlab

Cloudcompare 甚至可以让您在每个点之后存储其他值,并选择如何将这些值映射到颜色上

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM