python绘图系统27:matplotlib中平面坐标、极坐标和三维坐标的所有绘图函数 您所在的位置:网站首页 python字典函数和字典方法 python绘图系统27:matplotlib中平面坐标、极坐标和三维坐标的所有绘图函数

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

2023-11-02 22:06| 来源: 网络整理| 查看: 265

文章目录 绘图函数列表为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,yxerr,yerrx,yxerr,yerrx,y,zxerr,yerr,zerrfill_between纵向区间图x,y1,y2x,y1,y2❌fill_betweenx横向区间图y, x1, x2x,y1,y2❌contour等高线[x,y,]z[x,y,]zx,y,zcontourf填充等高线[x,y,]z[x,y,]zx,y,zquiver向量场图x,y,u,vx,y,u,vx,y,z,u,v,wstreamplot流场图x,y,u,vx,y,u,v❌barbs风场图x,y,u,vx,y,u,v❌hist直方图xxxboxplot箱线图xxxviolinplot小提琴图xx❌enventplot信封图xx❌hist2d二维直方图x,yx,y❌hexbin钻石图x,yx,y❌pie饼图xx❌tricontour自由等高线x,y,zx,y,zx,y,ztricontourf自由填充等高线x,y,zx,y,zx,y,ztricolor自由伪彩图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图像Noneplot_surface曲面图3dplot_wireframe网格图3dplot_trisurf三角面图3dtricontour自由等高线None, polar, 3dplot曲线图None, polar, 3dscatter散点图None, polar, 3dstem茎叶图None, polar, 3dstep阶梯图None, polar, 3dbar条形图None, polar, 3derrorbar误差线None, polar, 3dcontour等高线None, polar, 3dquiver向量场图None, polar, 3dpcolormesh伪彩图None, polarbarh横向条形图None, polarstackplot填充线图None, polarfill_between区间图None, polar,fill_betweenx横向区间图None, polar,streamplot流场图None, polarbarbs风场图None, polarviolinplot小提琴图None, polarenventplot信封图None, polarhist2d二维直方图None, polarhexbin钻石图None, polarpie饼图None, polartricolor自由伪彩图None, polartriplot三角骨架图None, polarcontourf填充等高线None, polartricontourf自由填充等高线None, polarhist直方图None, polarboxplot箱线图None, polartricontour自由等高线None, polar, 3dplot曲线图None, polar, 3dscatter散点图None, polar, 3dstem茎叶图None, polar, 3dstep阶梯图None, polar, 3dbar条形图None, polar, 3derrorbar误差线None, polar, 3dcontour等高线None, polar, 3dquiver向量场图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动图绘制:动图绘制🔥实现动图绘制系统坐标列表进阶:导出数据📌系统菜单📌批量文件导入📌辅助坐标轴绘图类型进阶:坐标映射📌八种绘图函数📌坐标和绘图函数设置📌所有绘图函数


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有