【已解决】如何Python利用matplotlib绘制三维曲面图(可自由旋转的三维图)

2023-11-18

1. 需求

在做电机的电磁设计时,需要对某一些参数进行优化,因此从电磁仿真软件Maxwell中导出了数据,部分数据如下图所示。
在这里插入图片描述
可是这样无法直观地看出参数的影响,因此将其调整为矩阵形式,如下图所示。
在这里插入图片描述
这样虽然已经能够比较直观地看出输入参数(电流和直径)对输出参数(转矩)的影响,可是不够美观,因此希望能够出一个三维图。

所以我们的需求就是,将上面的表格画成一个三维图展示出来。画三维图的话MATLAB或者Python都可以,由于这台电脑带不动MATLAB了,因此选择比较轻量且免费的Python来绘制。

2. 效果

在这里插入图片描述

3. 源代码

# -*- coding: utf-8 -*-
"""
Created on Wed Nov  4 11:50:31 2021

@author: 29235
"""

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

fig = plt.figure()
ax = Axes3D(fig)

X = np.array([40, 40.5, 41, 41.5, 42, 42.5, 43, 43.5, 44, 44.5, 45, 45.5, 46])
Y = np.array([73, 73.4, 73.8, 74.2, 74.6, 75])
X, Y = np.meshgrid(X, Y)

print("X维度信息",X.shape)
print("Y维度信息",Y.shape)

Z = np.array([[6.589055889,6.64902114,6.708506801,6.76873195,6.826929116,6.883863945,6.941234139,7.000980041,7.054255481,7.109803791,7.164581639,7.218312404,7.270706248
], 
             [6.791371118,6.852543525,6.913251843,6.973519432,7.033344309,7.092707208,7.151614187,7.210021177,7.267848299,7.324956649,7.381181255,7.436250947,7.489788889
], 
             [6.831692483,6.89286339,6.953606738,7.013941807,7.073861088,7.133397721,7.192511521,7.251186927,7.309458728,7.367340603,7.424484379,7.481372044,7.537841682
], 
             [7.086868085,7.149849934,7.212869543,7.275419973,7.337549343,7.399451263,7.461001477,7.522183123,7.582986224,7.643290063,7.703127756,7.762594775,7.821019196
], 
             [7.294926321,7.363130314,7.430014234,7.485656198,7.539103262,7.603323023,7.666993121,7.73028388,7.792974692,7.855100171,7.916647003,7.977528019,8.037752676
], 
             [7.694961389,7.766138728,7.83685522,7.907105954,7.976906299,8.046261641,8.114924107,8.183130388,8.250939779,8.318071108,8.384670594,8.450760983,8.516177871
], 
])

print("Z轴数据维度",Z.shape)

ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap='rainbow')
ax.set_xlabel('I(A)', color='b')
ax.set_ylabel('D(mm)', color='g')
ax.set_zlabel('T(Nm)', color='r')

plt.draw()
plt.show()

这个代码我是在spyder中写的,因为用spyder运行代码时,生成的图片默认会使用spyder的Plots绘图,因此出来的图是静态图,没法旋转。
在这里插入图片描述
网上说用matplotlib自带的图片查看器是可以旋转查看三维图的,可是我没有在spyder中找到不用Plots绘图的方法。

因此想了个办法。

4. 特殊要求(可自由旋转)

打开命令行,将目录更改为绘图代码所在的目录。
在这里插入图片描述
激活环境。(因为我是用自建的环境来处理数据的,所以需要激活环境,如果你们用的是默认环境来绘图,就不需要这一步骤)
在这里插入图片描述
输入命令python I_D_T_Data_Process.py
在这里插入图片描述
即直接运行.py文件,这是就会调用matplotlib自带的图形显示器了。此时就可以自由地旋转这个三维图了。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

【已解决】如何Python利用matplotlib绘制三维曲面图(可自由旋转的三维图) 的相关文章

随机推荐

  • 多维随机变量及其分布(四):

    一 二维随机变量及其分布函数 1 二维随机变量 设随机变量 Z X Y 则有 Z X Y 一个随机变量是有两个随机变量决定的 2 联合分布函数的基本性质 单调性 F x y 分别对x 或y是单调不减的 即 对任意固定的y 当 x1 lt x
  • 【SPI】STM32 SPI 双机通信,SPI从机模式使用

    文章目录 一 SPI主机配置 二 SPI从机配置 三 双机通信 1 轮询 中断 低速 2 轮询 DMA 低速 3 DMA DMA 高速 4 开启CRC校验 自选 四 遇到的问题 1 高速使用时 程序卡死 或者数据出错 已解决 2 数据莫名其
  • html制作日程安排,在线日程安排怎样做?日程表在线制作工具

    在线日程安排怎样做 日程表在线制作工具 在线日程安排怎样做 每日仅有二十四小时 可在一天我们要做的事却太多 每日忙的晕头转向 身心俱疲 这可咋办啊 戴尔 麦康基说过 计划的订制比计划本身更为重要 因此可见 订制好每日的行程安排是不可或缺的
  • 详述String类的equals方法

    详述String类的equals方法 1 两个String类的对象采取直接赋值 ublic class Test public static void main String args String name1 Tom String nam
  • java基础语法之面向对象

    面向对象 面向对象是一种编程思想 与之对应的是面向过程 区别 面向过程 POP 强调的是功能 面向对象 OOP 强调的是带有具体功能的对象 面向对象的优点 提高代码复用性 降低代码间的耦合度 提升代码维护性 三大特征 封装 继承 多态 一
  • 六种黑客入侵手机的常见方式

    六种黑客入侵手机的常见方式 在移动网络科技高速发展的今天 我们每个人的手机都有可能成为黑客攻击的对象 下面为大家介绍6种黑客入侵手机的常见方式 希望能够帮助大家避免手机被不对象攻击 1 网络钓鱼攻击 网络钓鱼攻击非常普遍 那是因为它们非常有
  • 磁盘空间重分配

    root localhost df h Filesystem Size Used Avail Use Mounted on dev mapper VolGroup lv root 50G 47G 16M 100 lv root满了 tmpf
  • pageHelper的使用与源码分析

    文章目录 一 使用步骤 二 分页原理 1 统计总数 2 源码分析 三 总结 pageHelper作为Mybatis最好用的分页插件 自然受到极大多数人的追捧 而这里想要尽量阐述清楚pageHelper的具体使用步骤 实现的背后原理 以及与原
  • WebGL 实践篇(五)三维图形的绘制及矩阵变换、正射投影

    一 三维 F 的绘制 1 着色器 按照上一篇提到的矩阵变换 我们可以直接在顶点着色器中加入相应的矩阵变换 这样就可以简化着色器代码 通过变量传入矩阵的值也便于之后矩阵变换的修改 三维图形的绘制相比于二维图形只在参数类型上有一些变化 注意ve
  • Dynamically inflates UI in Android App

    Dynamically inflates UI in Android App There is a fascinating idea that inflates UI according to an android layout xml d
  • Spring Cloud OAuth2 + JWT 实现

    Spring Cloud OAuth2介绍 Spring Cloud OAuth2 是 Spring Cloud 体系对OAuth2协议的实现 可以 来做多个微服务的统 认证 验证身份合法性 授权 验证权限 通过向OAuth2服务 统 认证
  • 信息学奥赛一本通 1175:除以13

    题目链接 http ybt ssoier cn 8088 problem show php pid 1175 思路 直接复用 高精度除低精度 的代码即可 include
  • 简洁又快速地处理集合——Java8 Stream(上)

    Java 8 发布至今也已经好几年过去 如今 Java 也已经向 11 迈去 但是 Java 8 作出的改变可以说是革命性的 影响足够深远 学习 Java 8 应该是 Java 开发者的必修课 今天给大家带来 Java 8 Stream 讲
  • signature=8b42938f09e2cf752303c59298e18eae,yarn.lock

    THIS IS AN AUTOGENERATED FILE DO NOT EDIT THIS FILE DIRECTLY yarn lockfile v1 babel code frame 7 0 0 beta 40 babel code
  • 数据分析---常见分类算法

    分类问题是监督学习的一个核心问题 在监督学习中 当输出变量取有限个离散值时 预测问题便成为分类问题 监督学习从数据中学习一个分类决策函数或分类模型 称为分类器 classifier 分类器对新的输入进行输出的预测 这个过程称为分类 KNN算
  • pyQt5 + pyUIC + pycharm 安装心得(Anaconda安装)

    目录 前言 一 环境变量问题 二 anaconda 安装 pyqt5 并配置 pycharm 编译器 1 首先我们打开Anaconda里面的Anaconda prompt 2 创建好环境后我们输入 activate pyqt5 进入我们的虚
  • 论文笔记: MOGRIFIER LSTM

    2020 ICLR 修改传统LSTM 当前输入和隐藏状态充分交互 从而获得更佳的上下文相关表达 1 Mogrifier LSTM LSTM的输入X和隐藏状态H是完全独立的 机器学习笔记 GRU gruc UQI LIUWJ的博客 CSDN博
  • 一次excle导入数值精度失真处理过程(附java、python、goland实现代码)

    在一次excle导入中通过java poi包导入数值过长时出现数值失真的问题 100283710028672000000 在通过java导入时变成了100283710028672010000 现在通过goland java python三种
  • Jupyter Notebook与Markdown知识点汇总(一)

    知识点汇总 安装与启动 软件简介 安装与启动 新建Notebook 操作教程 认识界面 运行Jupyter notebook 新建notebook 修改文件名 菜单栏详情 熟悉工具栏 单元 快捷键 Markdown知识点汇总 运行Pytho
  • 【已解决】如何Python利用matplotlib绘制三维曲面图(可自由旋转的三维图)

    1 需求 在做电机的电磁设计时 需要对某一些参数进行优化 因此从电磁仿真软件Maxwell中导出了数据 部分数据如下图所示 可是这样无法直观地看出参数的影响 因此将其调整为矩阵形式 如下图所示 这样虽然已经能够比较直观地看出输入参数 电流和