2017-06-02 412 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。经过一些修补和无知修改,使错误消失,最终它的工作。