2013-04-17 90 views
3

我有一个大集(100 +)256x256标量2D numpy数组。每个阵列基本上都是通过3D图像的切片,并且每个阵列均匀分开。Python:2D numpy阵列的大集......如何在3D中可视化?

我是一个python noob ...有关如何创建一个很好的三维可视化这个数据的任何提示?

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

干杯!

+2

首先,您需要找到一个能够进行3D可视化的库...然后您可以按照他们的API ... – mgilson

回答

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() 

导致

enter image description here

注意,这可能是少一些无用与期待非随机数据。

+0

对于初学者来说,例如,半透明的散点图就可以实现。我使用numpy.dstack将数组堆叠到列表中。 – Draper

+0

还是有点糊涂..不知道这将很容易看到。我已经添加了一个你想要做的事情的例子(对我来说).. – thebigdog

1

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

这样做的一种方法是对2D“表面”图的create a movie,并播放它们。这基本上只是一个接一个地绘制所有切片。

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

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

+0

谢谢。我拿起Mayavi,但我似乎无法找到任何工具来绘制一个简单的3D标量场! – Draper

+0

你能解释一下“绘制一个简单的3d标量场”是什么意思吗?你能给我们一个可视化的例子来证明你想要什么吗? – staticfloat