Mayavi,MAYAVIP
第一篇安装1(成功)安装2(未解决的故障)Mayavi的PythonAPI实用API记录Mayavi . mlab . im show()Mayavi . mlab . mesh()Mayavi . mlab . triangular _ mesh()Mayavi . mlab . points 3d()Mayavi . mlab . contour 3d()
玛雅维的官方文件链接在这里。1安装1(成功)
May的pip安装支持不好,用编译好的whl文件安装。安装方法如下。Mayavi及其测试环境是:
# win10系统#康达新建干净环境# python版# Mayavi 4 . 7 . 3版安装命令如下:
A create-n env _ name python=3.8您需要按照以下步骤安装以下文件(包括版本):
VTK==8.2 Mayavi==4.7 . 3 pyqt 5==5.15 . 4其中,由于pip3只有VTK9.0以上版本,所以在安装之前先下载whl文件。Whl是从非官方的Windows二进制for Python扩展包下载的,文件名为VTK8.2.0cp38cp38win _ amd64.whl .其中cp38表示Python版本为3.8;Amd64代表64位系统。安装命令如下:
#激活环境conda activate env_name#首次安装VTK pip 3 install xxxx path \ VTK 8 . 2 . 0 CP 38 CP 38 win _ amd64 . whl #安装Maya vipip 3通过pip安装Maya VI==4 . 7 . 3 #通过pip安装PyQt5,默认安装版本5.15.4,发现可用。pip3安装PyQt5发现还有一个叫menpo的可视化数据的包,但是没有进行详细的查询。首先是忧郁手镯。
2(故障未解决)Mayavi的pip安装支持不好,编译的whl文件安装失败。所以用下面的方法安装Mayavi。测试环境是:
# win10系统#康达新建干净环境# python版本为3.7(截至20210721,康达旗下Mayavi不支持Python 3.7以上版本)。新的环境命令如下:
# conda新建的clean环境,python版本为3.8 Conda Create-n env _ name Python=3.7安装Mayavi的命令如下:
#现已发现当前最高版本为Mayavi==4.7.1康达安装Mayavi,实际运行中出现错误:
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *警告:导入的VTK版本(9.0)与用于构建TVTK类的版本(8.2)不匹配。这可能会引起问题。请重建TVTK。* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
2 Mayavi的PythonAPI根据Mayavi的文档,Mayavi的基本PythonAPI有以下几种:
从mayavi导入mlab# 0D和1D datamlab . points 3d()mlab . plot 3d()# 2D datamlab . imshow()mlab . surf()mlab . contour _ surf()mlab . mesh()mlab . barchart()mlab . triangular()# 3d datamlab . contour 3d()mlab . quiver 3d()mlab . flow()volume _ slice()本文只介绍我实际使用的一些API函数。
从mayavi导入的API记录mlab#添加坐标轴mlab.axes (xlabel= x ,ylabel= y ,zlabel= z) #添加外框p1=mlab.points3d(x,y,Z) #可以替换为其他图像mlab . outline(P1)or mlab . outline()#或者就这样写#添加颜色标签mlab.colorbar()常见属性值如下:
不透明度=1.0 #不透明度,取值范围0-1。0.0表示完全透明,1.0表示完全不透明颜色=(1,1,1) # RGB值,每个数字的取值范围为0-1。例如:(1,1,1)表示白色。Colomap= hot #不同的配色方案,可接受的值如下: Accent flag hot publiuses 2秋季gist _ earth HSV publibunse 3黑白gist _灰色jet puppet光谱蓝-红色gist _ heat oranges purd春季blues。gist _ NCAR orrd purples summer bone gist _ rainbow paired rdbu winter brbg gist _ stern pastel 1 rdgy ylgnbubugn gist _ yarg pastel 2 rdpu ylgnbupu gnbu pink rdyl BU orbr cool Gray Piyg RYLGN YLORRDCOPPER Greens PRGN red DARK 2 GREYS PRISM set 1 mayavi . mlab . im SHOW()函数功能:将二维数组显示为图片。
使用方式:来自mayavi import mlabimg=xxxx # img是一款2D nun mpy array mlab . im show(img)mlab . show(效果展示:
Mayavi.mlab.mesh()函数功能:以网格的形式显示对象的表面。
mesh说明:下图来自千千Sama的一篇文章,直观的展示了什么是mesh。原文有以下gif动画。其中每个交点是一个网格点,描述这些网格点的坐标的矩阵是坐标矩阵。每一个网格点都需要用X,Y,z三个坐标表示。
但是X,Y,Z一般都是以二维矩阵的形式表示。例如:
X=[[0,1,2],[0,1,2],] Y=[[0,0,0],[1,1,1],] Z=[[1,2,3],[4,5,6],]表示总共有6个点。其中:x方向有3列;在[0,1,2]y方向有2行;[0,1]z的值表示z轴在相应位置的值。Mayavi文档解释了如何划分连接模式。
使用方式:从mayavi导入mlab#使用numpy数组可能betterx=[[0,1,2],[0,1,2],]y=[[0,0,0],[1,1,1],]z=[[1,2,1],[-1,-2,-1],] mlab.mesh (x,y,z)mlab . show(效果展示:备注#参数:presentation=# parameter:re presentation= surface 是默认值,绘制一个完整的曲面。Mlab.mesh (x,y,z,presentation= wireframe ,line _ width=1.0)mayavi . mlab . triangular _ mesh()函数功能:mlab . mesh函数默认的曲面是像网格一样连接的,但是面对不规则的曲面就不能这样表示了。Mlab.triangular_mesh是用三角形表示曲面,所以适用于其他情况。
使用方式:来自mayavi import mlabx=[-1,0,0,0,1]y=[0,-1,0,1,0]z=[0,0,3,0,0]triangular=[(2,0,1),(2,1,3),(2,3,4),(2,4,0)] mlab.triangular _ mesh (x,y,z,triangular)mlab . axes()mlab . outline()mlab . show()代码解释:
其中X,Y,Z定义了五个点:(-1,0,0),(0,-1,0),(0,0,3),(0,1,0),(1,0,0)(垂直看xyz的定义)。三角形定义了这些点是如何连接的:例如,(2,0,1)表示索引为2,0,1的三个点形成一个三角形。
n个三角形构成一个完整的曲面。
效果展示:
这篇关于这个功能的博客很全面,来自mayavii。may avi . mlab . points 3d()函数功能:三维离散点以球的形式表示。
使用方式:参考大蓝鲸-博客园的文章。
从mayavi导入mlab#使用numpy数组可能betterx=[1,2,3,4,5]y=[1,2,3,4,5]z=[1,2,3,4,5]s=[1.5,4.7,-0.112,-3]def f(x,y,Z): return x y-zmlab.points 3d (x,y,Z)or lab . points 3d(x,y,Z,s)or lab . points 3d(x,y,Z,f
效果展示:从mayavi导入mlabimport numpy as npimg=xxxx #读入3D数组#用法1 mlab . contour 3D(img)mlab . show()#用法2shape_x,shape_y,shape _ z=img . shapex=NP . linespace(0,512,num=shape_x)y=np.linespace(0,512,num=shape_y)z=np.linespace(0,512,num
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。