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也同样)
(lz是在mingw下操作的,cmd也同样)
下载并安装win
编译好版本(支持python3),如
VTK-7.0.0-cp34-cp34m-win_amd64.whl
$python -m pip install --upgrade pip
$pip install VTK-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
下载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]
通过enthought安装的:from enthought.mayavi import mlab
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
ImportError: DLL load failed: The specified module could not be found.
重装numpy和scipy[ linux和windows下安装python拓展包]
Also make sure that either wxPython or PyQT is installed.
而wxpython不支持python3,lz已放弃,转向matplotlib.mplot3d.[ 三维绘图之matplotlib.mplot3d工具包]
$python
>>>import mayavi
[ mayavi doc: installation]
import
如果是直接安装的from mayavi import mlab通过enthought安装的:from enthought.mayavi import mlab
运行时可能的错误及解决
from mayavi import mlabImportError: 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 statsfrom ._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工具包]
Mayavi.mlab模块绘制3D曲面
NumPy快速产生能进行广播运算的数组的ogrid对象
>>> x,y = np.ogrid[:5,:5]
>>> x
array([[0], [1], [2], [3], [4]])
>>> y
array([[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] >>> x array([[ 0. ], [ 0.33333333], [ 0.66666667], [ 1. ]]) >>> y array([[ 0. , 0.5, 1. ]])
利用ogrid的返回值,我们能很容易计算二元函数在等间距网格上的值。
Mayavi.mlab绘图实例
绘制三维曲面
用ogird产生二维坐标网格,计算三维空间的曲面,使用Mayavi的mlab模块快速绘制3D曲面
import numpy as np
from enthought.mayavi import mlab
x, 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()
from:http://blog.csdn.net/pipisorry/article/details/40662397
ref: mayavi doc