一. 安装

pip install mayavi -i https://pypi.tuna.tsinghua.edu.cn/simple # 报错 推荐下面的这条指令安装
pip install git+https://github.com/enthought/mayavi.git

二. 使用

1. Mayavi库基本元素

1. 处理/显示图形的mlab模块

660c253772f68a794cb5d5e9a871358f.png

2. Mayavi的api

174b9de45edb8bee7f1318d084943d84.png

2. 快速绘图实例

实例代码1:

# coding=utf-8
from mayavi import mlab

x = [[-1,1,1,-1,-1],[-1,1,1,-1,-1]]
y = [[-1,-1,-1,-1,-1],[1,1,1,1,1]]
z = [[1,1,-1,-1,1],[1,1,-1,-1,1]]

s = mlab.mesh(x,y,z)
mlab.show()

效果:

bb289b6cb8bfcddc4c96f9a833496303.png

只显示框的话:

from mayavi import mlab

x = [[-1,1,1,-1,-1],[-1,1,1,-1,-1]]
y = [[-1,-1,-1,-1,-1],[1,1,1,1,1]]
z = [[1,1,-1,-1,1],[1,1,-1,-1,1]]

s = mlab.mesh(x, y, z,representation = 'wireframe', line_width = 1.0)
mlab.show()

效果:

696d0e235ecda24f6566ea4225ad39ad.png

实例代码2:

from numpy import pi,sin,cos,mgrid
from mayavi import mlab
#建立数据
dphi, dtheta = pi/250.0, pi/250.0
[phi,theta] = mgrid[0:pi+dphi*1.5:dphi,0:2*pi+dtheta*1.5:dtheta]
m0 = 4;m1 = 3;m2 = 2;m3 = 3;m4 = 6;m5 = 2;m6 = 6;m7 = 4
r = sin(m0*phi)**m1 + cos(m2*phi)**m3 +sin(m4*theta)**m5 + cos(m6*theta)**m7
x = r*sin(phi)*cos(theta)
y = r*cos(phi)
z = r*sin(phi)*sin(theta)
#对数据进行三维可视化
s = mlab.mesh(x,y,z)
mlab.show()

效果:

ccf1270ec0365eadc41300b8e88e65c1.png

3 基于numpy数组绘图

基本知识:

1. Points3d

实现代码:

import numpy as np
from mayavi import mlab

def test_points3d():
    t = np.linspace(0, 4 * np.pi, 20)
    x = np.sin(2 * t)
    y = np.cos(t)
    z = np.cos(2 * t)
    s = 2 + np.sin(t)
    return mlab.points3d(x, y, z, s, colormap="Reds", scale_factor=.25) # s (x,y,z)处标量的值 copper

test_points3d()
mlab.show()

参数说明:结果:

c986ab1d74005de54e3cc28758e51b97.png

2. Plot3d

实现代码:

from mayavi import mlab
import numpy as np

n_mer, n_long = 6, 11
dphi = np.pi / 1000.0
phi = np.arange(0.0, 2*np.pi + 0.5*dphi, dphi)
mu = phi * n_mer
x = np.cos(mu) + (1+np.cos(n_long*mu/n_mer)*0.5)
y = np.sin(mu) + (1+np.cos(n_long*mu/n_mer)*0.5)
z = np.sin(n_long * mu / n_mer) * 0.5

l = mlab.plot3d(x, y, z, np.sin(mu), tube_radius = 0.025, colormap = 'Spectral')
mlab.show()

效果:

4e2e6fd7917f7c8bab2eb431fe6d28f5.png

3. imshow

实现代码:

from mayavi import mlab
import numpy as np

s = np.random.random((10, 10))

img = mlab.imshow(s, colormap = 'gist_earth')
mlab.show()

效果:

6db1a7c6e72fdef28a186a428e02ddbb.png

4. surf

实现代码1:

from mayavi import mlab
import numpy as np

def f(x, y):
  return np.sin(x-y) + np.cos(x + y)

x, y = np.mgrid[-7.:7.05:0.1, -5.:5.05:0.05]
s = mlab.surf(x, y, f)
mlab.show()

效果:

09414d19061d1d4a6e398024a38bf540.png

实现代码2:

from mayavi import mlab
import numpy as np

def f(x, y):
  return np.sin(x-y) + np.cos(x + y)

x, y = np.mgrid[-7.:7.05:0.1, -5.:5.05:0.05]
s = mlab.contour_surf(x, y, f)
mlab.show()

效果:

56a8020e815f603ac82bfb60c624d4b6.png

5. contour3d

实现代码:

from mayavi import mlab
import numpy as np

x, y, z = np.ogrid[-5:5:64j, -5:5:64j, -5:5:64j]
scalars = x*x + y*y + z*z

obj = mlab.contour3d(scalars, contours=8, transparent=True)
mlab.show()

效果:

2ae2873f4d2c37d70a84d7bb265ca55a.png

6. quiver3d

实现代码:

import numpy as np
from mayavi import mlab

x, y, z = np.mgrid[-2:3, -2:3, -2:3]
r = np.sqrt(x ** 2 + y ** 2 + z ** 4)
u = y * np.sin(r)/(r + 0.001)
v = -x * np.sin(r)/(r+0.001)
w = np.zeros_like(z)

obj = mlab.quiver3d(x, y, z, u, v, w, line_width=3, scale_factor=1)
mlab.show()

效果:

6ef59a21e1fbddf5a59a9d9e1c23fd3c.png

NO.1

往期推荐

Historical articles

百万点赞怎么来?用Python制作抖音视频原来这么简单!

用Python制作可视化GUI界面,一键提取图片当中的数据并保存至Excel当中

分享一个口碑炸裂的Python可视化模块,简单快速入手!!

【硬核原创】盘点Python爬虫中的常见加密算法,建议收藏!!

分享、收藏、点赞、在看安排一下?

f914c6217a65feb37b8ba56599f22087.gif

c42eb70d85089c81e79c4b7e43d981ea.gif

104c9d7517b93f558f155cf8e74523ee.gif

8f0b353a9fe43b8d4755ef3825b96800.gif

Logo

永洪科技,致力于打造全球领先的数据技术厂商,具备从数据应用方案咨询、BI、AIGC智能分析、数字孪生、数据资产、数据治理、数据实施的端到端大数据价值服务能力。

更多推荐