/pipisorry/article/details/40662397
Mayavi的安装
mayavi已经支持python3了:Done, supports 2.5, 2.6, 2.7 and 3.2+下载安装依赖vtk
linux下:sudo apt-get install python-vtk(lz未测试过) windows下pip安装:(lz是在mingw下操作的,cmd也同样) 下载并安装win编译好版本(支持python3),如VTK-7.0.0-cp34-cp34m-win_amd64.whl $python -m pip install --upgrade pip
$pip installVTK-7.0.0-cp34-cp34m-win_amd64.whl $python >>>import vtk 或者也可以在vtk官网下载并安装Standalone Python Interface (Installer),如vtkpython-7.0.0-Windows-64bit.exe(lz发现安装后好像只支持python2?)
下载安装mayavi
window下pip安装:下载win编译好版本,如mayavi-4.4.4-cp34-cp34m-win_amd64.whl pip install mayavi-4.4.4-cp34-cp34m-win_amd64.whl
$python
>>>import mayavi
[mayavi doc: installation]
import
如果是直接安装的from mayavi import mlab通过enthought安装的:from enthought.mayavi import mlab
运行时可能的错误及解决
from mayavi import mlab
ImportError: No module named 'tvtk.custom.light'
RuntimeError: module compiled against API version a but this version of numpy is 9
ImportError: numpy.core.multiarray failed to import
解决:pip install --upgrade numpy
从numpy 1.9更新到了1.11
from scipy import stats
from ._ufuncs import *
ImportError: DLL load failed: The specified module could not be found.
重装numpy和scipy[linux和windows下安装python拓展包]
pl = mlab.surf(x, y, rv.pdf(pos))
ImportError: Could not import backend for traits
Also make sure that either wxPython or PyQT is installed.
而wxpython不支持python3,lz已放弃,转向matplotlib.mplot3d.[三维绘图之matplotlib.mplot3d工具包]
皮皮blog
Mayavi.mlab模块绘制3D曲面
NumPy快速产生能进行广播运算的数组的ogrid对象
>>> x,y = np.ogrid[:5,:5]>>> xarray([[0], [1], [2], [3], [4]])>>> yarray([[0, 1, 2, 3, 4]])
mgrid对象的用法和ogrid对象类似,但是它所返回的是进行广播之后的数组。请读者运行“np.mgrid[:5,:5]”试试看。
ogrid是一个很有趣的对象,它和多维数组一样,用切片元组作为下标,返回的是一组可以用来广播计算的数组。其切片下标有两种形式:
开始值:结束值:步长,和“np.arange(开始值, 结束值, 步长)”类似
开始值:结束值:长度j,当第三个参数为虚数时,它表示所返回的数组的长度,和“np.linspace(开始值, 结束值, 长度)”类似:
>>> x, y = np.ogrid[:1:4j, :1:3j]>>> xarray([[ 0. ], [ 0.33333333], [ 0.66666667], [ 1. ]])>>> yarray([[ 0. , 0.5, 1. ]])
利用ogrid的返回值,我们能很容易计算二元函数在等间距网格上的值。
皮皮blog
Mayavi.mlab绘图实例
绘制三维曲面
02-numpy/numpy_ogrid_mlab.py
用ogird产生二维坐标网格,计算三维空间的曲面,使用Mayavi的mlab模块快速绘制3D曲面
import numpy as npfrom enthought.mayavi import mlabx, y = np.ogrid[-2:2:20j, -2:2:20j]z = x * np.exp( - x**2 - y**2)pl = mlab.surf(x, y, z, warp_scale="auto")mlab.axes(xlabel='x', ylabel='y', zlabel='z')mlab.outline(pl)mlab.show()
[使用ogrid创建的三维曲面]
from:/pipisorry/article/details/40662397
ref: mayavi doc
Mayavi2 tips
mayavi homepage
用python做科学计算:Mayavi-更方便的可视化