Mlab中基于Numpy的3D绘图函数

2023-12-21 10:32
文章标签 函数 3d 绘图 numpy mlab

本文主要是介绍Mlab中基于Numpy的3D绘图函数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Python科学计算三维可视化
黄天羽、嵩天

Mlab 基础

mayavi.mlab.show(func = None, stop = False)

基于numpy绘图

mlab对Numpy建立可视化过程
  1. 建立数据源
  2. 使用Filter(可选)
  3. 添加可视化模块

3D绘图函数

Points3d()
  • 基于Numpy数组x、 y、 z提供的三维点坐标,绘制点图形(0D数据)

  • 函数形式:
    points3d(x, y, z…)points3d(x, y, z, s, …)points3d(x, y, z, f, …)

  • x,y,z 表示 numpy 数组、列表或者其他形式的点三维坐标

  • s 表示在该坐标点处的标量值

  • f 表示通过函数f(x,y,z)返回的标量值

  • 参数
    参数

  • from mayavi import mlab
    import numpy as npt = 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)points = mlab.points3d(x, y, z, s, colormap = 'Reds', scale_factor = 0.25)
    mlab.show()

    points3d

Plot3d()
  • 基于1维Numpy数组x、 y、 z提供的三维坐标数据,绘制线

    图形(1D数据)

  • from mayavi import mlab
    import numpy as npn_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.5l = mlab.plot3d(x, y, z, np.sin(mu), tube_radius = 0.025, colormap = 'Spectral')
    mlab.show()

    plot3d

imshow()
  • from mayavi import mlab
    import numpy as nps = np.random.random((10, 10))img = mlab.imshow(s, colormap = 'gist_earth')
    mlab.show()

    imshow

surf()
  • from mayavi import mlab
    import numpy as npdef 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()

    surf

  • contour_surf()
    contour_surf

contour3d()
  • from mayavi import mlab
    import numpy as npx, y, z = np.ogrid[-5:5:64j, -5:5:64j, -5:5:64j]
    scalars = x*x + y*y + z*zobj = mlab.contour3d(scalars, contours=8, transparent=True)
    mlab.show()

    contour3d

quiver3d()
  • import numpy as np
    from mayavi import mlabx, 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()

    quiver3d

这篇关于Mlab中基于Numpy的3D绘图函数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/519661

相关文章

Java function函数式接口的使用方法与实例

《Javafunction函数式接口的使用方法与实例》:本文主要介绍Javafunction函数式接口的使用方法与实例,函数式接口如一支未完成的诗篇,用Lambda表达式作韵脚,将代码的机械美感... 目录引言-当代码遇见诗性一、函数式接口的生物学解构1.1 函数式接口的基因密码1.2 六大核心接口的形态学

numpy求解线性代数相关问题

《numpy求解线性代数相关问题》本文主要介绍了numpy求解线性代数相关问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 在numpy中有numpy.array类型和numpy.mat类型,前者是数组类型,后者是矩阵类型。数组

Oracle的to_date()函数详解

《Oracle的to_date()函数详解》Oracle的to_date()函数用于日期格式转换,需要注意Oracle中不区分大小写的MM和mm格式代码,应使用mi代替分钟,此外,Oracle还支持毫... 目录oracle的to_date()函数一.在使用Oracle的to_date函数来做日期转换二.日

C++11的函数包装器std::function使用示例

《C++11的函数包装器std::function使用示例》C++11引入的std::function是最常用的函数包装器,它可以存储任何可调用对象并提供统一的调用接口,以下是关于函数包装器的详细讲解... 目录一、std::function 的基本用法1. 基本语法二、如何使用 std::function

AI绘图怎么变现?想做点副业的小白必看!

在科技飞速发展的今天,AI绘图作为一种新兴技术,不仅改变了艺术创作的方式,也为创作者提供了多种变现途径。本文将详细探讨几种常见的AI绘图变现方式,帮助创作者更好地利用这一技术实现经济收益。 更多实操教程和AI绘画工具,可以扫描下方,免费获取 定制服务:个性化的创意商机 个性化定制 AI绘图技术能够根据用户需求生成个性化的头像、壁纸、插画等作品。例如,姓氏头像在电商平台上非常受欢迎,

无人叉车3d激光slam多房间建图定位异常处理方案-墙体画线地图切分方案

墙体画线地图切分方案 针对问题:墙体两侧特征混淆误匹配,导致建图和定位偏差,表现为过门跳变、外月台走歪等 ·解决思路:预期的根治方案IGICP需要较长时间完成上线,先使用切分地图的工程化方案,即墙体两侧切分为不同地图,在某一侧只使用该侧地图进行定位 方案思路 切分原理:切分地图基于关键帧位置,而非点云。 理论基础:光照是直线的,一帧点云必定只能照射到墙的一侧,无法同时照到两侧实践考虑:关

hdu1171(母函数或多重背包)

题意:把物品分成两份,使得价值最接近 可以用背包,或者是母函数来解,母函数(1 + x^v+x^2v+.....+x^num*v)(1 + x^v+x^2v+.....+x^num*v)(1 + x^v+x^2v+.....+x^num*v) 其中指数为价值,每一项的数目为(该物品数+1)个 代码如下: #include<iostream>#include<algorithm>

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl

C++操作符重载实例(独立函数)

C++操作符重载实例,我们把坐标值CVector的加法进行重载,计算c3=c1+c2时,也就是计算x3=x1+x2,y3=y1+y2,今天我们以独立函数的方式重载操作符+(加号),以下是C++代码: c1802.cpp源代码: D:\YcjWork\CppTour>vim c1802.cpp #include <iostream>using namespace std;/*** 以独立函数

函数式编程思想

我们经常会用到各种各样的编程思想,例如面向过程、面向对象。不过笔者在该博客简单介绍一下函数式编程思想. 如果对函数式编程思想进行概括,就是f(x) = na(x) , y=uf(x)…至于其他的编程思想,可能是y=a(x)+b(x)+c(x)…,也有可能是y=f(x)=f(x)/a + f(x)/b+f(x)/c… 面向过程的指令式编程 面向过程,简单理解就是y=a(x)+b(x)+c(x)