绘制由python-mayavi生成的大量堆积球体? paraview和pyevtk?如何将.npy转换为.vtk?

时间:2017-06-02 16:08:19

标签: python vtk mayavi

我想生成这样的图,除了有更多的粒子。 Matplotlib严重不足。

from google

现在我正在使用mayavi在python 3.5中运行jupyter笔记本。因为我需要绘制5x10 ^ 5个球体,所以它不实用,因为时间已经是2x10 ^ 4个球体的限制因素。

这是我生成mayavi图的python代码。我有一个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

我被告知我应该考虑使用evtk将我的numpy数组写入.vtk文件,然后在paraview中对这些文件进行可视化。我下载了paraview并阅读this,但也许我的python版本限制了我?首先,安装pyevtk--好的: 我试过conda install -c opengeostat pyevtk = 1.0.0,但由于与我的python版本不兼容而失败。我寻找细节但找不到任何细节。

接下来我下载了存储库[here] [https://pypi.python.org/pypi/PyEVTK/1.0.0],然后使用pip成功安装它。

接下来我放了evtk.py,vtk.py,hl.py和xml.py,并在存储库中尝试了一些例子 - 它们都不起作用。

似乎存在一些问题
from .vtk import *

键入命令。我尝试用

替换四个.py文件中的所有这些
from evtk import vtk 
from vtk import * 
等等,但没有运气。长话短说,我不能让pyevtk将我的numpy数组导出为.vtk文件。我可以在这方面使用一些帮助,或者更好的是我会喜欢一个不同的选项来让我的numpy数组通过paraview呈现。任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:-1)

solved

好的,我解决了自己的问题。使用pyevtk将numpy数组转换为.vtu对象后,使用paraview进行此图像。

开箱即用,存储库不起作用,导入四个.py文件中的模块存在一些问题,所以我对它们进行了全部修改。而不是从.vtk import *,我将其更改为vtk import *,依此类推,在库中的每个模块中。 evtk.py无法从xml.py导入一个类,所以我只是将其复制并粘贴,然后删除了xml.py.经过一些修补和无知的修改以使错误消失,最终它起作用了。