研究向量场

时间:2018-04-23 18:11:42

标签: python 3d vector-graphics graphic mayavi

我有一个包含6列的输入数据,其中第一个是位置x,y,z,其余是矢量场的矢量分量。我只能用python(x,y,z,px,py,pz)中的mayavi库的quiver3d制作一个3d图形,创建6个numpy数组x,y,z,px,py,pz,只是为了可视化它。

通过任何方式获得3D图形会很棒,我可以在其中插入切割平面,其中包含的切割平面将显示在其中,或者我可以看到颜色贴图的平面,这将有助于我理解其行为。有什么帮助吗?

这是输入:     https://pastebin.com/raw/pmGguxUc

以下是我用quiver3d函数进行可视化的代码。     导入numpy为np     导入mayavi.mlab作为mlab

data = np.loadtxt("vectorfield.dat", dtype = float)
dataTranspuesta=data.T
x=dataTranspuesta[0]
y=dataTranspuesta[1]
z=dataTranspuesta[2]
px=dataTranspuesta[3]
py=dataTranspuesta[4]
pz=dataTranspuesta[5]

mlab.quiver3d(x, y, z, px, py, pz, line_width=0.7 ,scale_mode="vector" ,scale_factor=0.0045,mask_points=7 ,mode="arrow", colormap="seismic" )
mlab.show()

1 个答案:

答案 0 :(得分:1)

使用mayavi的管道组织一切更容易。它们与使用mlab绘图函数基本相同,但是以流水线方式组织可视化任务。

Pfld = mlab.pipeline.vector_field(x, y, z, px, py, pz)
Quiver = mlab.pipeline.vectors(Pfld)
Pcut = mlab.pipeline.vector_cut_plane(Quiver, plane_orientation='x_axes')

您还可以为矢量绘制等值面轮廓。大小

Pmag = mlab.pipeline.extract_vector_norm(Pfld)
Piso = mlab.pipeline.iso_surface(Pmag)

并且可以通过mlab.pipeline.scalar_cut_plane(Pmag)mlab.pipeline.image_plane_widget(Pmag)

来实现标量字段的平面切割

有关允许的参数,装饰等的详细信息,请参阅Final App

同样documentationsexamples 1可能符合您的需求。