2017-06-02 72 views
1

我想生成這樣的情節,除了有更多的粒子。 Matplotlib可悲地不足。繪製python生成的大量堆積球體 - mayavi? paraview和pyevtk?如何將.npy轉換爲.vtk?

from google

現在我使用Mayavi的在Python 3.5通過jupyter筆記本上運行。因爲我需要繪製5×10^5個球體,所以它不會實用,因爲時間已經是2×10^4個球體的限制因素。

這裏是我的python代碼來產生mayavi情節。我有一個numpy的值數組[a,r,x,y,z]。這與問題的第一個數量無關。

"""VISUALIZATION WITH MAYAVI""" 
#I think this is too slow to be practical. 
#view particles with mayavi 
import mayavi 
from mayavi import mlab 
%gui qt 

def plot_sphere(p): #feed it p and get back a sphere \n", 
    t1,R,a,b,c = p 
    [phi,theta] = np.mgrid[0:2*np.pi:12j,0:np.pi:12j] #increase the numbers before j for better resolution but more time 
    x = R*np.cos(phi)*np.sin(theta) + a 
    y = R*np.sin(phi)*np.sin(theta) + b 
    z = R*np.cos(theta) + c 
    return mlab.mesh(x, y, z) 

#run s over all particles and plot it 
def view(particles): 
    for p in particles: 
     plot_sphere(p) 

view(spheres) 

此代碼生成曲線是這樣的:

enter image description here

有人告訴我,我應該考慮寫我numpy的陣列使用evtk到.vtk文件,然後在paraview包可視化這些。我下載了paraview並閱讀this,但也許我的版本的python限制了我?首先,安裝pyevtk--好吧: 我試過conda install -c opengeostat pyevtk = 1.0.0,但由於與我的python版本不兼容而失敗。我尋找細節,但找不到任何。

接下來我下載了資源庫[這裏] [https://pypi.python.org/pypi/PyEVTK/1.0.0],然後用pip成功安裝它。

接下來我把evtk.py,vtk.py,hl.py和xml.py,並試圖在存儲庫中的一些例子 - 他們都沒有工作。看起來有一些問題

from .vtk import * 

鍵入命令。我試圖用

from evtk import vtk 
from vtk import * 

替換所有這些在.py文件中,但沒有運氣。長話短說,我無法讓pyevtk工作將我的numpy數組導出爲.vtk文件。我可以在這方面使用一些幫助,或者更好,但我會喜歡不同的選項,以獲得由paraview呈現的我的numpy數組。任何幫助表示讚賞!

回答

-1

solved

好吧,我解決我自己的問題。使用pyevtk將numpy數組轉換爲.vtu對象後,使用paraview製作此圖像。

開箱即用,存儲庫不起作用,導入四個.py文件中的模塊時出現了一些問題,所以我修改了它們。而不是從.vtk import *中,我將其更改爲從庫中的每個模塊中的vtk import *等等。 evtk.py無法從xml.py導入類,所以我只是複製它並粘貼,然後刪除xml.py。經過一些修補和無知修改,使錯誤消失,最終它的工作。