7. 可视化实例

来源:互联网 发布:省市区街道数据库 编辑:程序博客网 时间:2024/05/16 12:54

  • 标量数据可视化
    • 等值面
    • 切平面
    • 复合观测
  • 矢量数据可视化
    • Quiver绘制
    • Masking Vector采样
    • Cut Plane切面
    • 级数的等值面
    • Flow可视化
    • 复合观测

标量数据可视化

等值面

import numpy as npfrom mayavi import mlabx, y, z = np.ogrid[-10:10:20j, -10:10:20j, -10:10:20j]s = np.sin(x*y*z)/(x*y*z)mlab.contour3d(s)mlab.show()

这里写图片描述

切平面

import numpy as npfrom mayavi import mlabx, y, z = np.ogrid[-10:10:20j, -10:10:20j, -10:10:20j]s = np.sin(x*y*z)/(x*y*z)mlab.pipeline.image_plane_widget(mlab.pipeline.scalar_field(s),  # 数据的标量数据场                                 plane_orientation='x_axes',  # 切平面的方向                                 slice_index=10                                 )mlab.pipeline.image_plane_widget(mlab.pipeline.scalar_field(s),                                 plane_orientation='y_axes',                                 slice_index=10                                 )mlab.outline()mlab.show()

这里写图片描述

复合观测

import numpy as npfrom mayavi import mlabx, y, z = np.ogrid[-10:10:20j, -10:10:20j, -10:10:20j]s = np.sin(x * y * z) / (x * y * z)src = mlab.pipeline.scalar_field(s)mlab.pipeline.iso_surface(src, contours=[s.min() + 0.1 * s.ptp(), ], opacity=0.1)mlab.pipeline.iso_surface(src, contours=[s.max() - 0.1 * s.ptp(), ])mlab.pipeline.image_plane_widget(src,                                 plane_orientation='z_axes',                                 slice_index=10,                                 )mlab.show()

矢量数据可视化

Quiver绘制

import numpy as npfrom mayavi import mlabx, y, z = np.mgrid[0:1:20j, 0:1:20j, 0:1:20j]u = np.sin(np.pi * x) * np.cos(np.pi * z)v = -2 * np.sin(np.pi * y) * np.cos(2 * np.pi * z)w = np.cos(np.pi * x) * np.sin(np.pi * z) + np.cos(np.pi * y) * np.sin(2 * np.pi * z)mlab.quiver3d(u, v, w)mlab.outline()mlab.show()

这里写图片描述

Masking Vector采样

import numpy as npfrom mayavi import mlabx, y, z = np.mgrid[0:1:20j, 0:1:20j, 0:1:20j]u = np.sin(np.pi * x) * np.cos(np.pi * z)v = -2 * np.sin(np.pi * y) * np.cos(2 * np.pi * z)w = np.cos(np.pi * x) * np.sin(np.pi * z) + np.cos(np.pi * y) * np.sin(2 * np.pi * z)src = mlab.pipeline.vector_field(u, v, w)mlab.pipeline.vectors(src,                      mask_points=10,  # 每10个点取一个点                      scale_factor=2.0  # 放缩比例                      )mlab.show()

这里写图片描述

Cut Plane切面

import numpy as npfrom mayavi import mlabx, y, z = np.mgrid[0:1:20j, 0:1:20j, 0:1:20j]u = np.sin(np.pi * x) * np.cos(np.pi * z)v = -2 * np.sin(np.pi * y) * np.cos(2 * np.pi * z)w = np.cos(np.pi * x) * np.sin(np.pi * z) + np.cos(np.pi * y) * np.sin(2 * np.pi * z)src = mlab.pipeline.vector_field(u, v, w)mlab.pipeline.vector_cut_plane(src,                               mask_points=10,  # 每10个点取一个点                               scale_factor=2.0  # 放缩比例                               )mlab.show()

Mac上闪退……
Process finished with exit code 139 (interrupted by signal 11: SIGSEGV)

这里写图片描述

级数的等值面

import numpy as npfrom mayavi import mlabx, y, z = np.mgrid[0:1:20j, 0:1:20j, 0:1:20j]u = np.sin(np.pi * x) * np.cos(np.pi * z)v = -2 * np.sin(np.pi * y) * np.cos(2 * np.pi * z)w = np.cos(np.pi * x) * np.sin(np.pi * z) + np.cos(np.pi * y) * np.sin(2 * np.pi * z)src = mlab.pipeline.vector_field(u, v, w)magnitude = mlab.pipeline.extract_vector_norm(src)mlab.pipeline.iso_surface(magnitude, contours=[2.0, 0.5])mlab.outline()mlab.show()

这里写图片描述

Flow可视化

import numpy as npfrom mayavi import mlabx, y, z = np.mgrid[0:1:20j, 0:1:20j, 0:1:20j]u = np.sin(np.pi * x) * np.cos(np.pi * z)v = -2 * np.sin(np.pi * y) * np.cos(2 * np.pi * z)w = np.cos(np.pi * x) * np.sin(np.pi * z) + np.cos(np.pi * y) * np.sin(2 * np.pi * z)flow = mlab.flow(u, v, w, seed_scale=1,                 seed_resolution=5,                 integration_direction='both' # 'forword' 'backword' 'both'                 )mlab.outline()mlab.show()

这里写图片描述

复合观测

import numpy as npfrom mayavi import mlabx, y, z = np.mgrid[0:1:20j, 0:1:20j, 0:1:20j]u = np.sin(np.pi * x) * np.cos(np.pi * z)v = -2 * np.sin(np.pi * y) * np.cos(2 * np.pi * z)w = np.cos(np.pi * x) * np.sin(np.pi * z) + np.cos(np.pi * y) * np.sin(2 * np.pi * z)src = mlab.pipeline.vector_field(u, v, w)magnitude = mlab.pipeline.extract_vector_norm(src)iso = mlab.pipeline.iso_surface(magnitude, contours=[2.0, ], opacity=0.3)vec = mlab.pipeline.vectors(magnitude, mask_points=40,                            line_width=1,                            color=(0.8, 0.8, 0.8),                            scale_factor=4.)flow = mlab.pipeline.streamline(magnitude, seedtype='plane',                                seed_visible=False,                                seed_scale=0.5,                                seed_resolution=1,                                linetype='ribbon')vcp = mlab.pipeline.vector_cut_plane(magnitude, mask_points=2,                                     scale_factor=4,                                     colormap='jet',                                     plane_orientation='x_axes')mlab.outline()mlab.show()

在Mac上仍然由于vector_cut_plane导致闪退。