Matplotlib-绘制3D曲面-plot_surfaceh与plot_trisurf函数-数据结构

2023-11-04

Matplotlib-绘制3D曲面-plot_surfaceh与plot_trisurf函数-数据结构

3D平面绘制示例-plot_surfaceh

平面和曲面的绘制方法一样,而用平面更容易分析,开始。

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np

fig = plt.figure()  # 创建一个画布
ax = Axes3D(fig, auto_add_to_figure=False)  # 画布上创建一个三维坐标系
# auto_add_to_figure=False,必须有这个参数设置,否则报错
# 但设置为False后需要手动为图像添加轴,即下面一行代码
fig.add_axes(ax)

X = [0, 1]
Y = [0, 1, 2]
X, Y = np.meshgrid(X, Y)
Z = X + Y

# 以下是构成这个3d平面的6个点,分别对应x,y,z坐标
x = [0, 1, 0, 1, 0, 1]
y = [0, 0, 1, 1, 2, 2]
z = [0, 1, 1, 2, 2, 3]

ax.scatter(x, y, z, color='black')  # 绘制3D散点图
ax.plot_trisurf(x, y, z)  # 绘制3D曲平面
plt.show()

在这里插入图片描述
到这里就有问题了,两个一维的数据是如何形成这6个点的?那么先来看一下X,Y,Z都是什么。

X = [[0, 1], [0, 1], [0, 1]]
Y = [[0, 0], [1, 1], [2, 2]]
Z = [[0, 1], [1, 2], [2, 3]]
x = [0, 1, 0, 1, 0, 1]
y = [0, 0, 1, 1, 2, 2]
z = [0, 1, 1, 2, 2, 3]

X,Y,Z都是二维数据,而竖着看就是x,y,z对应的6个坐标点,但为何要用这种三个二维表的形式呢?这也许源于某个标准,虽然我对这个标准没兴趣,但对这个标准的底层逻辑很感兴趣。那就从np.meshgrid()函数开始研究。

网格采样点的生成函数np.meshgrid()

从上面的例子可以看出np.meshgrid()的运算机制如下:
在这里插入图片描述
可以看出np.meshgrid()是将两个一维数据转换为两个二维数据,而两这个矩阵的计算结果就是Z的值,如果把X,Y,Z叠起来就得到了绘图所需要的6个坐标点。

3D平面绘制示例-plot_trisurf

如果想通过输入6个坐标点来绘制3D平面图呢,用plot_trisurf就OK了。

fig = plt.figure() 
ax = Axes3D(fig, auto_add_to_figure=False) 
fig.add_axes(ax)
# 以下是用于绘图的6个点,分别对应x,y,z坐标
x = [0, 1, 0, 1, 0, 1]
y = [0, 0, 1, 1, 2, 2]
z = [0, 1, 1, 2, 2, 3]

ax.scatter(x, y, z, color='black')  # 绘制3D散点
ax.plot_trisurf(x, y, z)  # 绘制3D平面
plt.show()

殊途同归:
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Matplotlib-绘制3D曲面-plot_surfaceh与plot_trisurf函数-数据结构 的相关文章

随机推荐

  • 2022年智能机器人与系统国际研讨会(ISoIRS 2022)

    2022年智能机器人与系统国际研讨会 ISoIRS 2022 重要信息 会议网址 www isoirs org 会议时间 2022年10月14 16日 召开地点 中国成都 截稿时间 2022年8月30日 录用通知 投稿后2周内 出版社 IO
  • C/C++时间戳转换函数

    目录 生成时间戳 time函数 函数原型 获取当前时间戳 转换时间戳为北京时间
  • 基于springboot+vue前后端分离的小区物业管理系统

    小区物业管理系统 简介 这是一个 SpringBoot Vue 的前后端分离小区物业管理系统 前端使用了若依的后台管理模板 使用 ElementUI 作为 UI 组件 使用 Vue Router 来进行路由跳转 使用 Vuex 来存储状态信
  • WPF自定义控件CustomControl中依赖属性、命令的使用

    Generic xaml中的UI代码
  • Redis中key的操作命令

    文章目录 Redis中key的操作命令 1 keys 查找所有符合模式pattern的key 2 exists 判断key是否存在于数据库中 3 move 移动指定的key到指定的数据库实例 4 ttl 查看key的剩余生存时间 5 exp
  • CoreML 的 C++部署 [2] 模型类抽象

    接上一篇 CoreML 的 C 部署 1 模型转换和预处理 再解决了预处理的问题后 部署部署还剩下模型类的抽象 主要包括初始化 推理以及获取输出 模型类的抽象 什么是模型类 可以参考 CoreML模型分析 我们是以MobileNetV2 m
  • 【Cinemachine】VirtualCamera虚拟相机详解(一)

    摘要 VirtualCamera虚拟相机是Cinemachine系统中的核心组成部分 咱们一起来看看虚拟相机是怎么用的吧 你好 我是跟着大智学Unity的萌新 我叫小新 这是我本周的学习总结报告哦 虚拟相机 Cinemachine中的Vir
  • 《数据仓库与数据挖掘》期末复习总结

    数据仓库与数据挖掘 期末复习总结 适用教材 数据挖掘概念与技术 第3版 Jiawei Han Mieheline Kamber Jian Pei著 机械工业出版社 提示 与教材内容不完全匹配 有所取舍 写在前面 这份复习总结是笔者根据老师授
  • 数据库期末复习(SQLserver)

    数据库期末复习 填空 1 数据库技术经历了 人工处理 文件系统 数据库系统 三个阶段 2 SQL语言集 数据定义 数据查询 数据 操纵 数据控制 功能于一体 3 E R图的主要元素是 实体型 属性 联系 4 关系系统的完整性控制包括 实体完
  • scrapy DNS lookup failed: no results for hostname lookup

    版权声明 更多最新原创文章请访问 最新原创主页 更多最全原创文章请访问 更多原创主页 DNS lookup failed 问题 第一天还可以正常跑起来的代码 第二天就跑不起来了 scrapy 中 解决方法
  • C语言第二节 分支结构

    1 BOOL数据类型 BOOL数据类型是一种表示非真即假的数据类型 只有 YES和 NO两种情况 YES 1 代表真 NO 0 代表假 BOOL数据类型的变量可以用来接收表达式的返回值 只要返回非0 那么BOOL类型的变量的值就为YES B
  • hdu 1078 FatMouse and Cheese

    Problem acm hdu edu cn showproblem php pid 1078 题意 n n 个洞 每个洞都放有 0 100 个芝士块 老鼠从 0 0 出发 每次都能横着或竖着走最多 k 格 且要走到芝士块数比当前洞多的洞里
  • 支付宝拿技术开刀把扫码无情地革掉

    随着互联网和数据的积累 计算机算力的跃升和算法的优化 人工智能正在让生活变得更加便捷 二维码扫码支付横空出世没多久 我们刚刚习惯扔掉现金的后现代生活 支付宝却突然宣布刷脸支付将全面接管扫码支付 又一次 支付宝拿自己较得心应手的技术开刀 把自
  • AOP功能代码实例---Spring源码从入门到精通(十七)

    上篇文章主要介绍了 Profile注解 可以对不同的开发环境 test dev 选择性加载不同的组件 如果用AnnocationConfigApplicationContext 需要用无参构造函数 先自己getEnviroment 设置指定
  • Unity_Raycasters

    Raycasters The Event System needs a method for detecting where current input events need to be sent to and this is provi
  • Atlantis 【POJ - 1151】【扫描线模板讲解】

    题目链接 是第二次写这道题了 但是也加深了我对扫描线的印象了 具体什么是扫描线 我们就如是讲讲吧 扫描线就是为了方便处理有重的区间面积的方式 我们通过线段树的方式去优化它 可以做到更少的时间复杂度 对于一个二维平面 我们用一个平行于Y轴的线
  • conda遇到的问题

    在使用conda安装python时 使用conda install python 3 6 0出现以下错误 Solving environment failed CondaHTTPError HTTP 000 CONNECTION FAILE
  • cpp基础:对象和类

    1 类名首字母大写 Wakawaka 2 类接口 编写类的人提供的一个操作类成员的方法 3 通过关键字实现类成员的访问控制 4 封装 将实现细节和抽象分开被称为封装 如 h和 cpp文件分开 接口是实现封装的重要一环 5 默认访问权限pri
  • 《Linux C++项目必备》glog日志管理

    一 简介 Google Glog 是一个C 语言的应用级日志记录框架 提供了 C 风格的流操作和各种助手宏 二 下载 git clone https github com google glog git cd glog autogen sh
  • Matplotlib-绘制3D曲面-plot_surfaceh与plot_trisurf函数-数据结构

    Matplotlib 绘制3D曲面 plot surfaceh与plot trisurf函数 数据结构 3D平面绘制示例 plot surfaceh 网格采样点的生成函数np meshgrid 3D平面绘制示例 plot trisurf 3