当前位置: 首页 > news >正文

python绘图系统27:matplotlib中平面坐标、极坐标和三维坐标的所有绘图函数

文章目录

    • 绘图函数列表
    • 为DrawType添加这些绘图函数
    • 绘图类别跳转坐标系
    • 坐标
    • 源代码

绘图函数列表

下面整理了几乎所有matplotlib中的绘图函数,及其在不同坐标轴下的表现。

函数类别2Dpolar3D备注
imshow图像X
pcolormesh伪彩图[X,Y,]ZX,Y,Z
plot曲线图x[,y]x[,y]x,y[,z]
scatter散点图x,y/X,Yx,yx,y,[,z]可为任意维度
stem茎叶图x,yx,yx,y[,z]
step阶梯图x,yx,yx,y[,z]
bar条形图x,yx,yx,y[,z]
barh横向条形图x,yx,y
stackplot填充线图x,yx,y
plot_surface曲面图x,y,zx,y必须是网格
plot_wireframe网格图x,y,zx,y必须是网格
plot_trisurf三角面图x,y,zx,y,z是一维数组
errorbar误差线x,y
xerr,yerr
x,y
xerr,yerr
x,y,z
xerr,yerr,zerr
fill_between纵向区间图x,y1,y2x,y1,y2
fill_betweenx横向区间图y, x1, x2x,y1,y2
contour等高线[x,y,]z[x,y,]zx,y,z
contourf填充等高线[x,y,]z[x,y,]zx,y,z
quiver向量场图x,y,u,vx,y,u,vx,y,z,u,v,w
streamplot流场图x,y,u,vx,y,u,v
barbs风场图x,y,u,vx,y,u,v
hist直方图xxx
boxplot箱线图xxx
violinplot小提琴图xx
enventplot信封图xx
hist2d二维直方图x,yx,y
hexbin钻石图x,yx,y
pie饼图xx
tricontour自由等高线x,y,zx,y,zx,y,z
tricontourf自由填充等高线x,y,zx,y,zx,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
  • 动图绘制:动图绘制🔥实现动图绘制系统
  • 坐标列表进阶:导出数据📌系统菜单📌批量文件导入📌辅助坐标轴
  • 绘图类型进阶:坐标映射📌八种绘图函数📌坐标和绘图函数设置📌所有绘图函数
http://www.lryc.cn/news/182596.html

相关文章:

  • 国庆中秋宅家自省: Python在Excel中绘图尝鲜
  • 计算机中的进制转换
  • Oracle统计信息问题排查常用SQL
  • css圣杯布局和双飞翼布局
  • 机器学习笔记 - 深入研究spaCy库及其使用技巧
  • 网站强制跳转至国家反诈中心该怎么办?怎么处理?如何解封?
  • 2023年10月4日
  • MacBook 录制电脑内部声音
  • mysql主从复制和读写分离
  • 【计算机网络】网络层-数据平面(学习笔记)
  • el-collapse 嵌套中 el-checkbox作为标题,选中复选框与el-tree联动
  • Ubuntu中还换源 sudo apt-get update更新失败
  • flutter播放rtmp视频
  • stm32 - 中断
  • 【洛谷 P1216】[USACO1.5] [IOI1994]数字三角形 Number Triangles 题解(动态规划)
  • 十四天学会C++之第四天(面向对象编程基础)
  • 复习Day09:哈希表part02:141.环形链表、142. 环形链表II、454.四数相加II、383赎金信
  • Internet通过TCP/IP协议可以实现多个网络的无缝连接
  • 互联网Java工程师面试题·Dubbo 篇·第二弹
  • (c语言)经典bug
  • 用于工业物联网和自动化的 Apache Kafka、KSQL 和 Apache PLC4
  • 1.1.1开发基础-硬件-万用表
  • Mysql内置函数、复合查询和内外连笔记
  • 【VUE·疑难问题】定义 table 中每行的高度(使用 element-UI)
  • 【重拾C语言】四、循环程序设计(后判断条件循环、先判断条件循环、多重循环;典例:计算平均成绩、打印素数、百钱百鸡问题)
  • Linux 安装 Gitlab
  • stm32-SPI协议
  • 想要精通算法和SQL的成长之路 - 并查集的运用和案例(省份数量)
  • 解决内网拉取企微会话存档代理问题的一种办法
  • 二十二,加上各种贴图