三维绘图之Mayavi.mlab

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 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
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工具包]


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的返回值,我们能很容易计算二元函数在等间距网格上的值。

皮皮blog


Mayavi.mlab绘图实例

绘制三维曲面f(x,y) = x e^{x^2-y^2}

02-numpy/numpy_ogrid_mlab.py

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

Mayavi2 tips

mayavi homepage

用python做科学计算:Mayavi-更方便的可视化


  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值