python 各种画图(2D 3D)-1 _matplotlib 官方网站笔记

背景

需利用python进行3D可视化处理,用于分析python得到的数据的正确性。

知识学习

python高阶3D绘图---pyvista模块,mayavi模块,pyopengl模块,MoviePy模块基础使用-CSDN博客

python用于3D绘图的模块比较多,pyvista模块,mayavi模块,pyopengl模块,MoviePy模块matplotlib库。建议直接看官方教程比较快。工具很多,具体使用哪一种,根据各模块的特点选用。

如下官网链接

Mayavi: 3D scientific data visualization and plotting in Python — mayavi 4.8.3.dev0 文档

Matplotlib 文档_Matplotlib 中文网

Matplotlib — Visualization with Python  (推荐看英文官网)

Examples — PyVista 0.43.1 documentation

PyOpenGL -- The Python OpenGL Binding (sourceforge.net)

MoviePy中文手册 — moviepy-cn 文档

应用

代码如下:

这个项目是因为,已经将得到的数据存在xlsx中,所以增加了读数据的操作,直接调用python的数据也一样,主要用到如下代码用于3d 散点图的显示

# 显示图形fig = plt.figure(figsize=(10, 8))  # 设置图形大小ax = fig.add_subplot(111, projection='3d')ax.scatter(Oab_rows_x, Oab_rows_y, Oab_rows_z, label='O set', s=1, alpha=0.8)ax.scatter(Pxb_rows_x, Pxb_rows_y, Pxb_rows_z, color='red', label='x set', s=1, alpha=0.8)ax.scatter(Pyb_rows_x, Pyb_rows_y, Pyb_rows_z, color='black', label='y set', s=1, alpha=0.8)# 添加图例ax.legend()plt.show()

官网中还有很多图例,如下截图 

 怎么设置图例,出图漂亮

 一个应用代码如下: (仅做学习记录,画图看官网)


import numpy as np
import math
import pandas as pdimport matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as pltimport openxlsx# 主函数
def main(excel_file, sheet_name):# 读取Excel文件df = pd.read_excel(excel_file, sheet_name=sheet_name)result_rows = []Oab_rows_x = []Oab_rows_y = []Oab_rows_z = []Pxb_rows_x = []Pxb_rows_y = []Pxb_rows_z = []Pyb_rows_x = []Pyb_rows_y = []Pyb_rows_z = []# 遍历DataFrame的每一行for index, row in df.iterrows():Oab = np.array([row['Oab_x'], row['Oab_y'], row['Oab_z']])Pxb = np.array([row['Pxb_x'], row['Pxb_y'], row['Pxb_z']])Pyb = np.array([row['Pyb_x'], row['Pyb_y'], row['Pyb_z']])Oab_row_x = Oab[0]Oab_rows_x.append(Oab_row_x)Oab_row_y = Oab[1]Oab_rows_y.append(Oab_row_y)Oab_row_z = Oab[2]Oab_rows_z.append(Oab_row_z)Pxb_row_x = Pxb[0]Pxb_rows_x.append(Pxb_row_x)Pxb_row_y = Pxb[1]Pxb_rows_y.append(Pxb_row_y)Pxb_row_z = Pxb[2]Pxb_rows_z.append(Pxb_row_z)Pyb_row_x = Pyb[0]Pyb_rows_x.append(Pyb_row_x)Pyb_row_y = Pyb[1]Pyb_rows_y.append(Pyb_row_y)Pyb_row_z = Pyb[2]Pyb_rows_z.append(Pyb_row_z)# 显示图形fig = plt.figure(figsize=(10, 8))  # 设置图形大小ax = fig.add_subplot(111, projection='3d')ax.scatter(Oab_rows_x, Oab_rows_y, Oab_rows_z, label='O set', s=1, alpha=0.8)ax.scatter(Pxb_rows_x, Pxb_rows_y, Pxb_rows_z, color='red', label='x set', s=1, alpha=0.8)ax.scatter(Pyb_rows_x, Pyb_rows_y, Pyb_rows_z, color='black', label='y set', s=1, alpha=0.8)# 添加图例ax.legend()plt.show()# 调用主函数
if __name__ == "__main__":excel_file = 'C:\\Users\Desktop\output.xlsx'  # 假设Excel文件名是data.xlsxsheet_name = 'Sheet 1'     # 假设数据在第一个工作表上main(excel_file, sheet_name)

其中如下代码是因为报错,可参照链接解决。

import matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as plt

matplotlib:报错:ImportError: Cannot load backend ‘TkAgg‘ which requires the ‘tk‘ interactive 的处理记录_importerror: cannot load backend 'tkagg' which req-CSDN博客

拓展:matplotlib 官方网站

按数据分类:

Pairwise data#   

成对、表格、 和函数数据。\((x, y)\)\((var\_0, \cdots, var\_n)\)\(f(x)=y\)

统计类数据

数据集中至少一个变量的分布图。其中一些方法还计算分布。

 网格化数据

不规则的网格化数据

3D和立体数据

用户指导

目录如下

Quick start guide#

  • A simple example
  • Parts of a Figure
  • Types of inputs to plotting functions
  • Coding styles
  • Styling Artists
  • Labelling plots
    • Axes labels and text
    • Using mathematical expressions in text
    • Annotations
    • Legends
  • Axis scales and ticks
  • Color mapped data
  • Working with multiple Figures and Axes
  • More reading

上图是figure的组成元素。要是绘制简单的图形,直接参照Quick start guide官方代码。也可以直接看教程。

教程

Introductory#  初级

  • Quick start guide

  • Customizing Matplotlib with style sheets and rcParams  自定义属性及参数设置

  • Animations using Matplotlib       动画

Intermediate 中级

  • Legend guide        图例指南

  • Styling with cycler   演示自定义属性周期设置,以控制多线绘图的颜色和其他样式属性。

  • Constrained layout guide  约束布局

  • Tight layout guide      紧凑布局

  • Arranging multiple Axes in a Figure  多坐标

  • Autoscaling Axis   可缩放

  • origin and extent in imshow  

Advanced 高级

  • Faster rendering by using blitting   动画

  • Path Tutorial  轨迹

  • Path effects guide   轨迹效果

  • Transformations Tutorial    官网说应用较少

Colors  颜色设置

See Colors.

Text  文本设置

See Text.

Toolkits  工具箱子

See User Toolkits.

  • The axisartist toolkit    自定义轴类
  • The axes_grid1 toolkit  网格图工具
  • The mplot3d toolkit    3D图工具

Contents

  • The mplot3d toolkit

    • Line plots

    • Scatter plots

    • Wireframe plots

    • Surface plots

    • Tri-Surface plots

    • Contour plots

    • Filled contour plots

    • Polygon plots

    • Bar plots

    • Quiver

    • 2D plots in 3D

    • Text

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/21821.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

目标2亿欧元!四年两次募资,全球最早专注于量子投资的Quantonation再次加码

Quantonation Ventures 是全球第一家专注于深度物理和量子技术的早期风险投资公司。4月10日,该公司宣布其第二只专门用于量子技术的早期基金 Quantonation II 首次募资完成,目前已募资 7000 万欧元,而目标为 2 亿欧元。 首次募资就募到了将…

《QT从基础到进阶·四十一》无法解析的外部符号及生成事件加入QT打包命令报错问题

其他无法解析的外部符号: 无法解析的外部符号 "public: virtual struct QMetaObject const * __cdecl ML_AddinManger::metaObject(void)const "… 无法解析的外部符号 “public: virtual void * __cdecl ML_AddinManger::qt_metacast(char const *)” (?…

toefl listening_托福听力

x.1 课程介绍 x.1.1 课程介绍 考试介绍 注意事项如下, x.1.2 分数设定和方法论 x.2.1 细节题解法 x.2.2 对话主旨题解法 听力对话不要扣分; 内容主旨题,以what开头; 目的主旨题,以why开头; 目的主旨题…

SpringCloud中注册中心Nacos的下载与使用步骤

1.前言 Nacos(Dynamic Naming and Configuration Service)是阿里巴巴开源的一款服务发现和配置管理工具。它可以帮助用户自动化地进行服务注册、发现和配置管理,是面向微服务架构的一个重要组成部分。 2.下载 链接:https://pan.b…

奶茶店、女装店、餐饮店是高危创业方向,原因如下:

关注卢松松,会经常给你分享一些我的经验和观点。 现在的俊男靓女们,心中都有一个执念: (1)想证明自己了,开个奶茶去…… (2)想多赚点钱了,加盟餐饮店去…… (3)工作不顺心了,搞个女装店去…… 但凡抱着…

回溯--字母迷宫

1.题目描述 字母迷宫游戏初始界面记作 m x n 二维字符串数组 grid,请判断玩家是否能在 grid 中找到目标单词 target。 注意:寻找单词时 必须 按照字母顺序,通过水平或垂直方向相邻的单元格内的字母构成,同时,同一个单…

Windows系统下DOS命令

Windows系统下DOS命令 1. 与文件操作相关1.1 mkdir,md命令1.2 rmdir、rd命令1.3 dir命令1.4 start命令1.5 echo命令1.6 type命令1.7 copy命令1.8 move命令1.9 copy和move的区别1.10 del命令1.11 rename命令1.12 attrib命令1.13 fsutil命令1.14 assoc命令 2. 与网络相…

数据持久化第六课-ASP.NET运行机制

数据持久化第六课-ASP.NET运行机制 一.预习笔记 1.动态网页的工作机制通常分为以下几个阶段: 1)使用动态Web开发技术编写Web应用程序,并部署到Web服务器。 2)客户端通过在浏览器中输入地址,请求动态页面。 3&#…

机器学习之数学基础(六)~时间复杂度和空间复杂度

目录 算法背景 background 1. 时间复杂度 Time Complexity 1.1 时间复杂度分类 1.1.1 O(1) 常数阶 1.1.2 O(n) 线性阶 1.1.3 O(n^2) 平方阶 1.1.4 O(logn) 对数阶 1.1.5 O(nlogn) 线性对数阶 1.1.6 O(2^n) 指数阶 1.1.7 O(n!) 阶乘阶 1.1.8 时间复杂度分类 1.2 时…

03-07Java自动化之JAVA基础之循环

JAVA基础之循环 一、for循环 1.1for循环的含义 for(初始化语句;条件判断;条件控制或–){ ​ //代码语句 } 1、首先执行初始话语句,给变量一个起始的值 2、条件判断进行判断,为true,执行循环体中的代码语句 ​ …

3DGS语义分割之LangSplat

LangSplat是CVPR2024的paper. 实现3DGS的语义分割(可文本检索语义) github: https://github.com/minghanqin/LangSplat?tabreadme-ov-file 主要思想是在3DGS中加入了CLIP的降维语义特征,可用文本检索目标,实现分割。 配置环境&…

网线水晶头为什么要按标准线序打

网线接水晶头为什么要按照线序接? 减少串扰和增强信号质量: 双绞线的设计是为了减少信号间的串扰( Crosstalk),每一对线芯在传输过程中通过相互扭绞抵消外部电磁干扰。按照标准线序接线能够确保每一对线芯之间的信号传…

Ubuntu server 24 (Linux) 安装部署smartdns 搭建智能DNS服务器

SmartDNS是推荐本地运行的DNS服务器,SmartDNS接受本地客户端的DNS查询请求,从多个上游DNS服务器获取DNS查询结果,并将访问速度最快的结果返回给客户端,提高网络访问速度和准确性。 支持指定域名IP地址,达到禁止过滤的效…

Pinia的介绍、使用及持久化

Pinia介绍 什么是Pinia? Pinia 是 Vue 的最新 状态管理工具,状态就是数据。 通俗地讲:Pinia 是一个插件,可以帮我们管理 vue 通用的数据 (多组件共享的数据)。 比如一份数据有多个组件需要使用,在学Pinia之前我们需…

Accelerate 笔记:保存与加载文件

保存和加载模型、优化器、随机数生成器和 GradScaler 使用 save_state() 将上述所有内容保存到一个文件夹位置使用 load_state() 加载之前通过 save_state() 保存的状态通过使用 register_for_checkpointing(),可以注册自定义对象以便自动从前两个函数中存储或加载 …

vue3+electron+typescript 项目安装、打包、多平台踩坑记录-mac+linux(包括国产化系统)

上一章《vue3electrontypescript 项目安装、打包、多平台踩坑记录》,我们讲了vue3electrontypescript的项目安装和windows 32位、64位的打包。这一节我们来看下mac和linux平台的打包和一些坑。 mac 经过上一章我们的踩坑后,再到mac环境,这里…

“雪糕刺客”爆改“红薯刺客”,钟薛高给了消费品牌哪些启示?

夏日袭来,一支价格高昂却让人眼前一亮的雪糕,曾一度成为市场热议的焦点。然而,随着消费者对性价比的日益关注,曾经的“雪糕刺客”钟薛高,其创始人林盛近期以直播带货红薯开启他的还债之路,高打情怀“直播自…

关于序列化与反序列化解题

1、[安洵杯 2019]easy_serialize_php <?php$function $_GET[f];function filter($img){$filter_arr array(php,flag,php5,php4,fl1g);$filter /.implode(|,$filter_arr)./i;return preg_replace($filter,,$img); }if($_SESSION){unset($_SESSION); }$_SESSION["use…

《数据资产》专题:《数据资产》如何确权、估值? 《数据产权》如何明确、保护?

2020 年 04 月 10 日&#xff0c;《中共中央国务院 关于“构建更加完善的要素市场化配置体制机制”的意见》正式公布&#xff0c;将数据确立为五大生产要素&#xff08;土地、资本、劳动力以及技术&#xff09;之一&#xff0c;数据要素市场化已成为建设数字中国不可或缺的一部…

python系列29:压测工具locust

1. 介绍 使用pip进行安装&#xff0c;下面是个简单例子&#xff1a; from locust import HttpUser, taskclass HelloWorldUser(HttpUser):taskdef hello_world(self):self.client.get("/hello")self.client.get("/world")然后打开web页面&#xff1a; 点…