[英]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_surface
或scatter
代替plot_wireframe
。 有关更多信息,请参阅文档。
能省则X,Y,Z每个“1”点到文件中的坐标,并显示它cloudcompare或meshlab ?
Cloudcompare 甚至可以让您在每个点之后存储其他值,并选择如何将这些值映射到颜色上
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.