3

我有一大组(100+)256x256 标量 2D numpy 数组。每个阵列基本上是通过 3D 图像的切片,并且每个阵列都是均匀分离的。

我有点像 python 菜鸟......关于如何创建一个漂亮的 3d 数据可视化的任何提示?

我需要将 100 多个 2D 标量数组编译成更大的 3D 数组吗?

干杯!

4

2 回答 2

1

你需要给我们更多的信息,因为你如何想象它取决于你想从中得到什么!请注意,这个问题总是会有多个可能的答案,因为您试图在 2D 屏幕上显示本质上是 3D 的信息。

一种方法是创建一个二维“表面”情节的电影,然后回放它们。这基本上只是一个接一个地绘制所有切片。

如果您想一次查看所有 3D 数据,您很可能不能,因为我不知道任何用于 Python 的体积绘图工具。可能最接近的是MayaVi

如果您尽可能详细地向我们提供有关您想要完成的任务的更多信息,我们可以为您指出更具体的示例/代码资源。

于 2013-04-17T23:59:32.227 回答
0

不完全确定您希望可视化效果如何?听起来有点像您想要可视化 4D 函数?

您可以在空间中创建一个 3D 网格(参见例如Numpy meshgrid in 3D),然后使用矩阵/矩阵数的值来为散点图中的点着色?

如果您可以详细说明您想看到的内容,可能会更具体。

编辑:

好吧,在您发表评论之后,这听起来仍然非常难以可视化,但我想您可以这样做(我已经生成了随机数据,并且大小比您要小得多)

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

(X,Y,Z) = np.mgrid[-10:10:25j, -10:10:25j, -10:10:10j]

col = np.random.rand(25,25,10)

fig = plt.figure(1)
fig.clf()
ax = Axes3D(fig)

ax.scatter(X,Y,Z, c=col)

plt.draw()

plt.show()

导致

在此处输入图像描述

请注意,对于非随机数据,这可能没有那么无用。

于 2013-04-17T23:56:07.350 回答