2013-04-17 116 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