【已解决】如何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绘制三维曲面图(可自由旋转的三维图) 的相关文章

  • numba.prange 性能不佳

    我试图整理一个简单的例子来说明使用的好处numba prange对于我自己和一些同事来说 但我无法获得像样的加速 我编写了一个简单的一维扩散求解器 它本质上是在一个长数组上循环 组合元素i 1 i and i 1 并将结果写入element
  • DRF ManyToMany Field 在创建对象时出现错误

    我有一个Rant模型与Category使用链接到它ManyToManyField 我已经序列化了它 但问题是这个错误 categories Expected a list of items but got type str 这些是我的序列化
  • 异常处理的范围规则是什么? [复制]

    这个问题在这里已经有答案了 我偶然发现了一个有趣的场景这个问题 https stackoverflow com q 69464430 6045800 考虑以下简单示例 try 1 0 error error except Exception
  • Python - 对象 MagicMock 不能在“await”表达式中使用

    当我尝试使用 MagicMock 在单元测试中模拟异步函数时 出现以下异常 类型错误 对象 MagicMock 不能在 await 表达式中使用 示例代码如下 source code class Service async def comp
  • 使用输入按钮处理网站上的分页

    试图使用硒抓取这个网站 我的代码可以工作 但目前它只抓取第一页 该页面使用输入按钮作为浏览页面的一种方式 因此我想逐个单击每个按钮 但它不起作用 有没有人有任何其他方法来处理此类分页的导航 import requests from sele
  • XGBoost 产生预测结果和概率

    我可能正在文档中查看它 但我想知道 XGBoost 是否有办法生成结果的预测和概率 就我而言 我正在尝试预测多类分类器 如果我能返回Medium 88 那就太好了 分类器 中 预测概率 88 参数 params max depth 3 ob
  • TypeError:无法在 re.findall() 中的类似字节的对象上使用字符串模式

    我正在尝试学习如何自动从页面获取网址 在下面的代码中 我试图获取网页的标题 import urllib request import re url http www google com regex r pattern re compile
  • 使用 Pandas 解析时避免 Excel 的科学记数法舍入

    我有一个自动生成的 Excel 文件 其中偶尔包含非常大的数字 例如135061808695 在 Excel 文件中 当您单击单元格时 它会显示完整的数字135061808695然而 在视觉上 使用自动 常规 格式 数字显示为1 35063
  • Python 字典不按顺序排列

    我创建了一个字母表字典 其值从0开始 并根据单词文件增加一定的量 我对最初的字典进行了硬编码 我希望它保持按字母顺序排列 但事实并非如此 我希望它按字母顺序返回字典 基本上与初始字典保持相同 我怎样才能保持秩序 from wordData
  • python-click:添加修改其他参数行为的选项

    这个问题是关于click http click pocoo org 5 包裹 Click 是一个用于创建漂亮命令行的 Python 包 使用尽可能少的代码以可组合的方式进行接口 它是 命令行界面创建工具包 它具有高度可配置性 但带有开箱即用
  • QFileDialog 作为 TableView 的编辑器:如何获取结果?

    我正在使用一个QFileDialog作为某些专栏的编辑QTableView 这基本上有效 对一些焦点问题取模 请参阅here https stackoverflow com questions 22854242 qfiledialog as
  • 如何在 Pandas 中将多列乘以一列

    我想拥有 df income 1 income 2 df mtaz proportion 返回这些列乘以df mtaz proportion 这样我就可以设置 df mtaz income 1 mtaz income 2 df income
  • 如何从包含许多表的 Excel 工作表中解析数据帧(使用 Python,可能使用 Pandas)

    我正在处理布局糟糕的 Excel 工作表 我正在尝试解析这些工作表并将其写入数据库 每个工作表可以有多个表 尽管这些可能的表格的标题是已知的 但哪些表格将位于任何给定的工作表上 它们在工作表上的确切位置也不是已知的 表格不以一致的方式对齐
  • 如何根据python中的文件名检索每个文件的datemodtime?

    我当前的流程涉及循环遍历源目录并将每个文件的名称添加到 python 中的数据帧中 我也想获取每个文件的修改日期 import datetime import os import pandas as pd set src directory
  • Python 的最佳实践:assert command() == False [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何在Python中比较枚举?

    从 Python 3 4 开始 Enum类存在 我正在编写一个程序 其中一些常量具有特定的顺序 我想知道哪种方式最适合比较它们 class Information Enum ValueOnly 0 FirstDerivative 1 Sec
  • 使用 South 更改 Django 模型列默认值

    我在 Django 项目中使用 South 和 Postgresql DB 我想更改一个模型字段的默认值以供继续使用 我不需要以前的记录 刚刚新记录 我是否需要为此进行迁移 或者只是更改模型 旧场详细信息 background style
  • kombu.exceptions.EncodeError:用户不可 JSON 序列化

    我有 django 1 11 5 应用程序和 celery 4 1 0 我一直收到 kombu exceptions EncodeError
  • 为什么 `Pool.map()` 多处理中的内存消耗急剧增加?

    我正在对 pandas 数据帧进行多重处理 方法是将其拆分为多个数据帧 这些数据帧存储为列表 并且 使用Pool map 我将数据帧传递给定义的函数 我的输入文件约为 300 mb 因此小数据帧大约为 75 mb 但是 当多处理运行时 内存
  • Python记录多个模块记录器在主程序之外不起作用

    我的目标是从多个模块进行日志记录 同时仅在一个位置 主程序中 配置记录器 如图所示这个答案 https stackoverflow com questions 15727420 using python logging in multipl

随机推荐

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

    一 二维随机变量及其分布函数 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中导出了数据 部分数据如下图所示 可是这样无法直观地看出参数的影响 因此将其调整为矩阵形式 如下图所示 这样虽然已经能够比较直观地看出输入参数 电流和