python绘图系统27:matplotlib中平面坐标、极坐标和三维坐标的所有绘图函数
文章目录
- 绘图函数列表
- 为DrawType添加这些绘图函数
- 绘图类别跳转坐标系
- 坐标
- 源代码
绘图函数列表
下面整理了几乎所有matplotlib中的绘图函数,及其在不同坐标轴下的表现。
| 函数 | 类别 | 2D | polar | 3D | 备注 |
|---|---|---|---|---|---|
| imshow | 图像 | X | ❌ | ❌ | |
| pcolormesh | 伪彩图 | [X,Y,]Z | X,Y,Z | ❌ | |
| plot | 曲线图 | x[,y] | x[,y] | x,y[,z] | |
| scatter | 散点图 | x,y/X,Y | x,y | x,y,[,z] | 可为任意维度 |
| stem | 茎叶图 | x,y | x,y | x,y[,z] | |
| step | 阶梯图 | x,y | x,y | x,y[,z] | |
| bar | 条形图 | x,y | x,y | x,y[,z] | |
| barh | 横向条形图 | x,y | x,y | ❌ | |
| stackplot | 填充线图 | x,y | x,y | ❌ | |
| plot_surface | 曲面图 | ❌ | ❌ | x,y,z | x,y必须是网格 |
| plot_wireframe | 网格图 | ❌ | ❌ | x,y,z | x,y必须是网格 |
| plot_trisurf | 三角面图 | ❌ | ❌ | x,y,z | x,y,z是一维数组 |
| errorbar | 误差线 | x,y xerr,yerr | x,y xerr,yerr | x,y,z xerr,yerr,zerr | |
| fill_between | 纵向区间图 | x,y1,y2 | x,y1,y2 | ❌ | |
| fill_betweenx | 横向区间图 | y, x1, x2 | x,y1,y2 | ❌ | |
| contour | 等高线 | [x,y,]z | [x,y,]z | x,y,z | |
| contourf | 填充等高线 | [x,y,]z | [x,y,]z | x,y,z | |
| quiver | 向量场图 | x,y,u,v | x,y,u,v | x,y,z,u,v,w | |
| streamplot | 流场图 | x,y,u,v | x,y,u,v | ❌ | |
| barbs | 风场图 | x,y,u,v | x,y,u,v | ❌ | |
| hist | 直方图 | x | x | x | |
| boxplot | 箱线图 | x | x | x | |
| violinplot | 小提琴图 | x | x | ❌ | |
| enventplot | 信封图 | x | x | ❌ | |
| hist2d | 二维直方图 | x,y | x,y | ❌ | |
| hexbin | 钻石图 | x,y | x,y | ❌ | |
| pie | 饼图 | x | x | ❌ | |
| tricontour | 自由等高线 | x,y,z | x,y,z | x,y,z | |
| tricontourf | 自由填充等高线 | x,y,z | x,y,z | x,y,z | |
| tricolor | 自由伪彩图 | x,y,z | ❌ | ||
| triplot | 三角骨架图 | x,y | ❌ |
为DrawType添加这些绘图函数
之所以闲得无聊总结matplotlib中的绘图函数,是为了在Python绘图系统中正确第调用它们。
有了这些绘图类别后,首先绘图字典需要更新,这个字典不能做成全局变量,因为其中的ax,其实是作为函数参数传递进来的。
funcDct = {"点线图" : ax.plot, "曲线图" : ax.plot, "散点图" : ax.scatter, "图像" : ax.imshow, "伪彩图" : ax.pcolormesh, "条形图" : ax.bar, "横向条形图": ax.barh, "茎叶图" : ax.stem, "阶梯图": ax.step,"填充图" : ax.stackplot, "误差线" : ax.errorbar, "区间图" : ax.fill_between, "横向区间图": ax.fill_betweenx, "曲面图" : ax.plot_surface, "网格图" : ax.plot_wireframe,"三角面图": ax.plot_trisurf,"等高线" : ax.contour, "填充等高线" : ax.contourf,"向量场图": ax.quiver, "流场图":ax.streamplot,"风场图" : ax.barbs, "直方图" : ax.hist, "二维直方图":ax.hist2d,"钻石图" : ax.hexbin, "信封图" : ax.enventplot, "箱线图" : ax.boxplot, "小提琴图":violinplot,"饼图" : ax.pie,"自由等高线" : ax.tricontour,"自由填充等高线" : ax.tricontourf,"自由伪彩图" : ax.tricolor,"三角骨架图" : ax.triplot
}
然后据此更新self.TYPES,
self.TYPES = ["点线图", "曲线图", "散点图", "图像", "伪彩图" , "条形图", "横向条形图", "茎叶图", "阶梯图", "填充图", "误差线", "区间图", "横向区间图", "曲面图", "网格图", "三角面图", "等高线", "填充等高线","向量场图", "流场图", "风场图", "直方图", "二维直方图", "钻石图", "信封图", "箱线图", "小提琴图", "饼图", "自由等高线", "自由填充等高线" ,"自由伪彩图" ,"三角骨架图"]
绘图类别跳转坐标系
这些绘图函数建议使用的坐标系如下表
| 绘图函数 | 图像类别 | 建议的坐标 |
|---|---|---|
| imshow | 图像 | None |
| plot_surface | 曲面图 | 3d |
| plot_wireframe | 网格图 | 3d |
| plot_trisurf | 三角面图 | 3d |
| tricontour | 自由等高线 | None, polar, 3d |
| plot | 曲线图 | None, polar, 3d |
| scatter | 散点图 | None, polar, 3d |
| stem | 茎叶图 | None, polar, 3d |
| step | 阶梯图 | None, polar, 3d |
| bar | 条形图 | None, polar, 3d |
| errorbar | 误差线 | None, polar, 3d |
| contour | 等高线 | None, polar, 3d |
| quiver | 向量场图 | None, polar, 3d |
| pcolormesh | 伪彩图 | None, polar |
| barh | 横向条形图 | None, polar |
| stackplot | 填充线图 | None, polar |
| fill_between | 区间图 | None, polar, |
| fill_betweenx | 横向区间图 | None, polar, |
| streamplot | 流场图 | None, polar |
| barbs | 风场图 | None, polar |
| violinplot | 小提琴图 | None, polar |
| enventplot | 信封图 | None, polar |
| hist2d | 二维直方图 | None, polar |
| hexbin | 钻石图 | None, polar |
| pie | 饼图 | None, polar |
| tricolor | 自由伪彩图 | None, polar |
| triplot | 三角骨架图 | None, polar |
| contourf | 填充等高线 | None, polar |
| tricontourf | 自由填充等高线 | None, polar |
| hist | 直方图 | None, polar |
| boxplot | 箱线图 | None, polar |
| tricontour | 自由等高线 | None, polar, 3d |
| plot | 曲线图 | None, polar, 3d |
| scatter | 散点图 | None, polar, 3d |
| stem | 茎叶图 | None, polar, 3d |
| step | 阶梯图 | None, polar, 3d |
| bar | 条形图 | None, polar, 3d |
| errorbar | 误差线 | None, polar, 3d |
| contour | 等高线 | None, polar, 3d |
| quiver | 向量场图 | None, polar, 3d |
故更改cbTypeChanged函数如下
def cbTypeChanged(self, evt):t = self.drawVars['type'].get()p = self.drawVars['proj'].get()NO3D = ("曲线图", "散点图", "茎叶图", "条形图", "误差线","等高线", "向量场图", "自由等高线")if t in ("图像"):self.wDct['proj']['value'] = ("None")elif t in ("曲面图", "网格图", "三角面图"):self.wDct['proj']['value'] = ("3d")elif t in NO3D:self.wDct['proj']['value'] = ("None", "3d", "polar")else:self.wDct['proj']['value'] = ("None", "polar")projs = self.wDct['proj']['value']if p not in projs:self.drawVars['proj'].set(projs[0]) self.cbProjChanged(None)
坐标
接下来要为这些绘图函数分类,发现最特殊的是imshow,只支持平面直角坐标;然后是三个三维绘图函数,只支持三维直角坐标,剩下的基本都同时支持平面直角和极坐标。
def cbTypeChanged(self, evt):t = self.drawVars['type'].get()p = self.drawVars['proj'].get()NO3D = ("曲线图", "散点图", "茎叶图", "条形图", "误差线","等高线", "向量场图", "自由等高线")if t in ("图像"):self.wDct['proj']['value'] = ("None")elif t in ("曲面图", "网格图", "三角面图"):self.wDct['proj']['value'] = ("3d")elif t in NO3D:self.wDct['proj']['value'] = ("None", "3d", "polar")else:self.wDct['proj']['value'] = ("None", "polar")projs = self.wDct['proj']['value']if p not in projs:self.drawVars['proj'].set(projs[0]) self.cbProjChanged(None)
最后,是坐标的变化,直角坐标系下的变化为
def cbProjNone(self, t):if t in ("点线图", "曲线图"):self.wDct['dim']['value'] = ('x', 'xy')elif t in ("图像", "直方图", "饼图", "箱线图", "小提琴图", "信封图"):self.wDct['dim']['value'] = ('x')elif t in ("误差线", "向量场图", "流场图", "风场图"):self.wDct['dim']['value'] = ('xyuv')elif t in ("伪彩图", "等高线", "填充等高线"):self.wDct['dim']['value'] = ('x', 'xyz')elif t in ("区间图", "横向区间图", "自由等高线", "自由伪彩图", "自由填充等高线"):self.wDct['dim']['value'] = ('xyz')else:self.wDct['dim']['value'] = ('xy')
经过对比发现,极坐标情况下除了没有imshow之外,其他绘图函数的坐标轴的个数与直角坐标基本相同,所以就直接调用cbProjNone了。
def cbProjPolar(self, t):self.cbProjNone(t)
相比之下,三维坐标的情况可能更加简单一些
def cbProj3d(self, t):if t in ("向量场图", "误差线"):self.wDct['dim']['value'] = ('xyzuvw')elif t in ("曲线图", "散点图", "茎叶图", "阶梯图", "条形图"):self.wDct['dim']['value'] = ('xy', 'xyz')else:self.wDct['dim']['value'] = ('xyz')
至此,就成功载入了几乎所有matplotlib中的函数。
源代码
Python绘图系统:
- 基础:将matplotlib嵌入到tkinter 📈简单绘图系统 📈数据导入📈三维绘图系统
- 自定义控件:坐标控件📉坐标列表控件📉多组数据绘图系统📉极坐标📉绘图风格📉风格控件
- 图表类型和风格:散点图和条形图📊混合类型图表📊多子图📊定制绘图风格
- 坐标设置进阶:动态更新组件📌导入外部文件📌导入txt
- 动图绘制:动图绘制🔥实现动图绘制系统
- 坐标列表进阶:导出数据📌系统菜单📌批量文件导入📌辅助坐标轴
- 绘图类型进阶:坐标映射📌八种绘图函数📌坐标和绘图函数设置📌所有绘图函数
相关文章:
python绘图系统27:matplotlib中平面坐标、极坐标和三维坐标的所有绘图函数
文章目录 绘图函数列表为DrawType添加这些绘图函数绘图类别跳转坐标系坐标源代码 绘图函数列表 下面整理了几乎所有matplotlib中的绘图函数,及其在不同坐标轴下的表现。 函数类别2Dpolar3D备注imshow图像X❌❌pcolormesh伪彩图[X,Y,]ZX,Y,Z❌plot曲线图x[,y]x[,y]…...
国庆中秋宅家自省: Python在Excel中绘图尝鲜
【一】国庆中秋: 悟 【国庆中秋】双节来临,相信各位有自己度过的方式,而我却以独特的方式度过了一个说出来不怕各位见笑的双节; 双节到来,没有太多惊喜,也没有太多的负面情绪, 只是喜欢独处,静静反省这些年走过的酸甜苦辣;生活中的许多不欢而散,不期而遇…...
计算机中的进制转换
在计算机软件中,经常需要进行进制转换,这包括二进制、八进制、十进制和十六进制之间的转换。以下是一些常见的转换方法: 二进制转十进制:这是最直接的转换,基本上不需要什么特别的算法。你只需要按照二进制的权值进行…...
Oracle统计信息问题排查常用SQL
Oracle统计信息问题排查常用SQL 对表的基本情况分析统计信息收集作业分析最近一次的统计信息收集修改触发统计信息收集的阈值 对表的基本情况分析 是否为临时表: select owner,table_name,temporary from dba_tables where table_namexxx;是否为分区表:…...
css圣杯布局和双飞翼布局
圣杯布局 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-width, in…...
机器学习笔记 - 深入研究spaCy库及其使用技巧
一、简述 spaCy 是一个用于 Python 中高级自然语言处理的开源库。它专为生产用途而设计,这意味着它不仅功能强大,而且快速高效。spaCy 在学术界和工业界广泛用于各种 NLP 任务,例如标记化、词性标注、命名实体识别等。 安装,这里使用阿里的源。 pip install spacy…...
网站强制跳转至国家反诈中心该怎么办?怎么处理?如何解封?
在互联网环境中,网站安全是非常重要的。然而,在实际操作过程中,不少网站可能因内容问题、技术安全漏洞等原因被迫下线甚至跳转至国家反诈骗中心网址。面对这一严峻问题,我们如何有效解决,让网站恢复运行并解除强制跳转…...
2023年10月4日
服务器 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);//实例化一个服务器server new QTcpServer(this);//此时,服务器已经成功进入监听状态&…...
MacBook 录制电脑内部声音
MacBook 录制电脑内部声音 老妈喜欢跳广场舞,现在广场舞音频下载都收费了!没办法,只能自己录歌了,外录有杂音大家也都知道,所以就只能采用内录的方式然后再用 Audition 调整一下音量大小。 一、(前置条件&a…...
mysql主从复制和读写分离
在企业应用中,成熟的业务通常数据量都比较大 单台MySQL在安全性、高可用性和高并发方面都无法满足实际的需求 配置多台主从数据库服务器以实现读写分离 所以要做主从服务器,保证安全性 做一写一读服务器,将提升性能 1、什么是读写分离 …...
【计算机网络】网络层-数据平面(学习笔记)
一、网络层提供的服务 1、虚电路服务 通讯前建立虚电路,发送前认为选择路径,所以分组沿着同一条虚电路。 特点:带宽固定 2、数据报服务 数据可能沿着不同路径传输 3、网络层的两个层面 数据层面:源主机到目标主机 控制层面&…...
el-collapse 嵌套中 el-checkbox作为标题,选中复选框与el-tree联动
<el-drawertitle"应用授权":visible.sync"menuDrawer"><el-collapse accordion style"padding: 15px"><el-collapse-item v-for"item in platList"><template slot"title"><el-checkbox v-model…...
Ubuntu中还换源 sudo apt-get update更新失败
sudo apt-get update更新失败 1 前提2 编辑3 换源 1 前提 浏览器可以访问百度 如下文章: VMware 中虚拟机没网 2 编辑 输入如下命令,进入换源文件: sudo gedit /etc/apt/sources.list 3 换源 中科大 deb http://mirrors.ustc.edu.cn/ub…...
flutter播放rtmp视频
安装 dependencies:fijkplayer: ^0.11.0使用方法 import package:fijkplayer/fijkplayer.dart; import package:flutter/material.dart;class RtmpPlayerPage extends StatefulWidget {const RtmpPlayerPage({super.key});overrideState<RtmpPlayerPage> createState()…...
stm32 - 中断
stm32 - 中断 概念中断向量表NVIC 嵌套中断向量控制器优先级 中断EXTI概念基本结构例子- 对射式红外传感器计次例子 - 旋转编码器 概念 stm32 支持的中断资源(都属于外设) EXTITIMADCUSARtSPII2C stm32支持的中断 内核中断 外设中断 中断通道与优先级 一…...
【洛谷 P1216】[USACO1.5] [IOI1994]数字三角形 Number Triangles 题解(动态规划)
[USACO1.5] [IOI1994]数字三角形 Number Triangles 题目描述 观察下面的数字金字塔。 写一个程序来查找从最高点到底部任意处结束的路径,使路径经过数字的和最大。每一步可以走到左下方的点也可以到达右下方的点。 在上面的样例中,从 7 → 3 → 8 →…...
十四天学会C++之第四天(面向对象编程基础)
类和对象是什么? 在C中,类是一种用户定义的数据类型,它可以包含数据成员(也就是属性)和成员函数(也就是方法)。类是一种模板或蓝图,用于创建具体的对象。 对象是类的实例ÿ…...
复习Day09:哈希表part02:141.环形链表、142. 环形链表II、454.四数相加II、383赎金信
之前的blog:https://blog.csdn.net/weixin_43303286/article/details/131765317 我用的方法是在leetcode再过一遍例题,明显会的就复制粘贴,之前没写出来就重写,然后从拓展题目中找题目来写。辅以Labuladong的文章看。然后刷题不用…...
Internet通过TCP/IP协议可以实现多个网络的无缝连接
Internet通过TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/互联网协议)协议实现多个网络的无缝连接。 TCP/IP是Internet的基础通信协议套件,它定义了数据如何在不同网络之间传输和路由,使得…...
互联网Java工程师面试题·Dubbo 篇·第二弹
目录 18、Dubbo 用到哪些设计模式? 19、Dubbo 配置文件是如何加载到 Spring 中的? 20、Dubbo SPI 和 Java SPI 区别? 21、Dubbo 支持分布式事务吗? 22、Dubbo 可以对结果进行缓存吗? 23、服务上线怎么兼容旧版本&…...
K230目标检测实战:手把手教你用Labelme标注数据并一键转成VOC格式(附避坑指南)
K230目标检测实战:高效数据标注与VOC格式转换全攻略 当你第一次接触K230开发板进行目标检测项目时,数据准备往往是最大的拦路虎。特别是从原始图片到符合AI_Cube要求的VOC格式数据集,这个过程充满了各种"坑"。本文将分享一套经过实…...
OpCore Simplify:零基础黑苹果配置的终极自动化解决方案
OpCore Simplify:零基础黑苹果配置的终极自动化解决方案 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 还在为复杂的OpenCore EFI配置而烦…...
Vial-QMK键盘固件从入门到精通:打造专属机械键盘体验
Vial-QMK键盘固件从入门到精通:打造专属机械键盘体验 【免费下载链接】vial-qmk QMK fork with Vial-specific features. 项目地址: https://gitcode.com/gh_mirrors/vi/vial-qmk Vial-QMK是一款功能强大的开源键盘固件,为机械键盘爱好者提供了全…...
AnythingtoRealCharacters2511效果展示:动漫角色真人化案例
AnythingtoRealCharacters2511效果展示:动漫角色真人化案例 你有没有想过,如果自己喜欢的动漫角色真的出现在现实世界里,会是什么样子?不是那种粗糙的3D建模,也不是简单的滤镜叠加,而是看起来就像用专业相…...
Fish-Speech-1.5开源模型的企业级部署架构设计
Fish-Speech-1.5开源模型的企业级部署架构设计 如果你正在考虑将Fish-Speech-1.5这个强大的语音合成模型引入到自己的业务中,比如做个智能客服、有声书平台,或者给产品加个语音播报功能,那你肯定不能只满足于在本地电脑上跑个Demo。一旦涉及…...
nlp_structbert_sentence-similarity_chinese-large实战教程:本地知识库向量化检索完整指南
nlp_structbert_sentence-similarity_chinese-large实战教程:本地知识库向量化检索完整指南 你是不是经常遇到这样的问题:面对公司内部堆积如山的文档、产品手册、客服记录,想找某个特定信息时,却像大海捞针一样困难?…...
一文读懂:智能体身份权限治理演进实录
序章当一个实验性的“咖啡外卖”智能体(BrewSense),从服务几位工程师的小工具,演变为数千人依赖的自动化伙伴时,会发生什么?这不仅仅是用户量和调用量的激增,更是一场关于身份、权限与信任的治理…...
【Mojo跨语言互操作权威配置白皮书】:实测TensorFlow/NumPy/Pandas三方库零报错接入方案
第一章:Mojo跨语言互操作的核心原理与架构定位Mojo并非传统意义上的独立运行时语言,而是以“Python超集”为设计原点、深度嵌入LLVM生态的系统级编程语言。其跨语言互操作能力不依赖FFI桥接层或胶水代码,而是通过统一的中间表示(M…...
Linux驱动——uart子系统驱动注册分析
韦东山驱动大全uart子系统笔记自整理——08_UART驱动情景分析_注册由于韦东山老师uart子系统的08注册情景分析的笔记很简略,所以在学完这节课后自己整理了一份详细笔记,包含TTY驱动框架,数据结构分析,以及注册过程分析,…...
QQ音乐下载的歌曲怎么导出来?分享我的FFMpeg自动化处理脚本(附Win/Mac命令)
用FFMpeg实现QQ音乐文件自动化处理:跨平台脚本全解析 每次从QQ音乐下载的歌曲文件总是带着各种限制——加密格式只能在特定播放器打开,专辑封面无法显示,批量处理更是让人头疼。作为一个整理过上千首音乐文件的资深用户,我摸索出…...
