繪圖函數(shù)列表
下面整理了幾乎所有matplotlib中的繪圖函數(shù),及其在不同坐標(biāo)軸下的表現(xiàn)。
函數(shù) | 類(lèi)別 | 2D | polar | 3D | 備注 |
---|---|---|---|---|---|
imshow | 圖像 | X | ? | ? | |
pcolormesh | 偽彩圖 | [X,Y,]Z | X,Y,Z | ? | |
plot | 曲線圖 | x[,y] | x[,y] | x,y[,z] | |
scatter | 散點(diǎn)圖 | 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必須是網(wǎng)格 |
plot_wireframe | 網(wǎng)格圖 | ? | ? | x,y,z | x,y必須是網(wǎng)格 |
plot_trisurf | 三角面圖 | ? | ? | x,y,z | x,y,z是一維數(shù)組 |
errorbar | 誤差線 | x,y xerr,yerr |
x,y xerr,yerr |
x,y,z xerr,yerr,zerr |
|
fill_between | 縱向區(qū)間圖 | x,y1,y2 | x,y1,y2 | ? | |
fill_betweenx | 橫向區(qū)間圖 | 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 | 向量場(chǎng)圖 | x,y,u,v | x,y,u,v | x,y,z,u,v,w | |
streamplot | 流場(chǎng)圖 | x,y,u,v | x,y,u,v | ? | |
barbs | 風(fēng)場(chǎng)圖 | 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添加這些繪圖函數(shù)
之所以閑得無(wú)聊總結(jié)matplotlib中的繪圖函數(shù),是為了在Python繪圖系統(tǒng)中正確第調(diào)用它們。
有了這些繪圖類(lèi)別后,首先繪圖字典需要更新,這個(gè)字典不能做成全局變量,因?yàn)槠渲械腶x,其實(shí)是作為函數(shù)參數(shù)傳遞進(jìn)來(lái)的。
funcDct = {
"點(diǎn)線圖" : ax.plot, "曲線圖" : ax.plot,
"散點(diǎn)圖" : ax.scatter,
"圖像" : ax.imshow, "偽彩圖" : ax.pcolormesh,
"條形圖" : ax.bar, "橫向條形圖": ax.barh,
"莖葉圖" : ax.stem, "階梯圖": ax.step,
"填充圖" : ax.stackplot,
"誤差線" : ax.errorbar,
"區(qū)間圖" : ax.fill_between, "橫向區(qū)間圖": ax.fill_betweenx,
"曲面圖" : ax.plot_surface,
"網(wǎng)格圖" : ax.plot_wireframe,
"三角面圖": ax.plot_trisurf,
"等高線" : ax.contour, "填充等高線" : ax.contourf,
"向量場(chǎng)圖": ax.quiver, "流場(chǎng)圖":ax.streamplot,
"風(fēng)場(chǎng)圖" : ax.barbs,
"直方圖" : ax.hist, "二維直方圖":ax.hist2d,
"鉆石圖" : ax.hexbin, "信封圖" : ax.enventplot,
"箱線圖" : ax.boxplot, "小提琴圖":violinplot,
"餅圖" : ax.pie,
"自由等高線" : ax.tricontour,
"自由填充等高線" : ax.tricontourf,
"自由偽彩圖" : ax.tricolor,
"三角骨架圖" : ax.triplot
}
然后據(jù)此更新self.TYPES,
self.TYPES = [
"點(diǎn)線圖", "曲線圖", "散點(diǎn)圖", "圖像", "偽彩圖" ,
"條形圖", "橫向條形圖", "莖葉圖", "階梯圖", "填充圖",
"誤差線", "區(qū)間圖", "橫向區(qū)間圖", "曲面圖",
"網(wǎng)格圖", "三角面圖", "等高線", "填充等高線",
"向量場(chǎng)圖", "流場(chǎng)圖", "風(fēng)場(chǎng)圖", "直方圖", "二維直方圖",
"鉆石圖", "信封圖", "箱線圖", "小提琴圖", "餅圖",
"自由等高線", "自由填充等高線" ,"自由偽彩圖" ,"三角骨架圖"]
繪圖類(lèi)別跳轉(zhuǎn)坐標(biāo)系
這些繪圖函數(shù)建議使用的坐標(biāo)系如下表
繪圖函數(shù) | 圖像類(lèi)別 | 建議的坐標(biāo) |
---|---|---|
imshow | 圖像 | None |
plot_surface | 曲面圖 | 3d |
plot_wireframe | 網(wǎng)格圖 | 3d |
plot_trisurf | 三角面圖 | 3d |
tricontour | 自由等高線 | None, polar, 3d |
plot | 曲線圖 | None, polar, 3d |
scatter | 散點(diǎn)圖 | None, polar, 3d |
stem | 莖葉圖 | None, polar, 3d |
step | 階梯圖 | None, polar, 3d |
bar | 條形圖 | None, polar, 3d |
errorbar | 誤差線 | None, polar, 3d |
contour | 等高線 | None, polar, 3d |
quiver | 向量場(chǎng)圖 | None, polar, 3d |
pcolormesh | 偽彩圖 | None, polar |
barh | 橫向條形圖 | None, polar |
stackplot | 填充線圖 | None, polar |
fill_between | 區(qū)間圖 | None, polar, |
fill_betweenx | 橫向區(qū)間圖 | None, polar, |
streamplot | 流場(chǎng)圖 | None, polar |
barbs | 風(fēng)場(chǎng)圖 | 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 | 散點(diǎn)圖 | None, polar, 3d |
stem | 莖葉圖 | None, polar, 3d |
step | 階梯圖 | None, polar, 3d |
bar | 條形圖 | None, polar, 3d |
errorbar | 誤差線 | None, polar, 3d |
contour | 等高線 | None, polar, 3d |
quiver | 向量場(chǎng)圖 | None, polar, 3d |
故更改cbTypeChanged函數(shù)如下
def cbTypeChanged(self, evt):
t = self.drawVars['type'].get()
p = self.drawVars['proj'].get()
NO3D = ("曲線圖", "散點(diǎn)圖", "莖葉圖", "條形圖", "誤差線",
"等高線", "向量場(chǎng)圖", "自由等高線")
if t in ("圖像"):
self.wDct['proj']['value'] = ("None")
elif t in ("曲面圖", "網(wǎng)格圖", "三角面圖"):
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)
坐標(biāo)
接下來(lái)要為這些繪圖函數(shù)分類(lèi),發(fā)現(xiàn)最特殊的是imshow,只支持平面直角坐標(biāo);然后是三個(gè)三維繪圖函數(shù),只支持三維直角坐標(biāo),剩下的基本都同時(shí)支持平面直角和極坐標(biāo)。
def cbTypeChanged(self, evt):
t = self.drawVars['type'].get()
p = self.drawVars['proj'].get()
NO3D = ("曲線圖", "散點(diǎn)圖", "莖葉圖", "條形圖", "誤差線",
"等高線", "向量場(chǎng)圖", "自由等高線")
if t in ("圖像"):
self.wDct['proj']['value'] = ("None")
elif t in ("曲面圖", "網(wǎng)格圖", "三角面圖"):
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)
最后,是坐標(biāo)的變化,直角坐標(biāo)系下的變化為
def cbProjNone(self, t):
if t in ("點(diǎn)線圖", "曲線圖"):
self.wDct['dim']['value'] = ('x', 'xy')
elif t in ("圖像", "直方圖", "餅圖", "箱線圖", "小提琴圖", "信封圖"):
self.wDct['dim']['value'] = ('x')
elif t in ("誤差線", "向量場(chǎng)圖", "流場(chǎng)圖", "風(fēng)場(chǎng)圖"):
self.wDct['dim']['value'] = ('xyuv')
elif t in ("偽彩圖", "等高線", "填充等高線"):
self.wDct['dim']['value'] = ('x', 'xyz')
elif t in ("區(qū)間圖", "橫向區(qū)間圖", "自由等高線", "自由偽彩圖", "自由填充等高線"):
self.wDct['dim']['value'] = ('xyz')
else:
self.wDct['dim']['value'] = ('xy')
經(jīng)過(guò)對(duì)比發(fā)現(xiàn),極坐標(biāo)情況下除了沒(méi)有imshow之外,其他繪圖函數(shù)的坐標(biāo)軸的個(gè)數(shù)與直角坐標(biāo)基本相同,所以就直接調(diào)用cbProjNone了。
def cbProjPolar(self, t):
self.cbProjNone(t)
相比之下,三維坐標(biāo)的情況可能更加簡(jiǎn)單一些
def cbProj3d(self, t):
if t in ("向量場(chǎng)圖", "誤差線"):
self.wDct['dim']['value'] = ('xyzuvw')
elif t in ("曲線圖", "散點(diǎn)圖", "莖葉圖", "階梯圖", "條形圖"):
self.wDct['dim']['value'] = ('xy', 'xyz')
else:
self.wDct['dim']['value'] = ('xyz')
至此,就成功載入了幾乎所有matplotlib中的函數(shù)。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-728852.html
源代碼
Python繪圖系統(tǒng):文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-728852.html
- 基礎(chǔ):將matplotlib嵌入到tkinter ??簡(jiǎn)單繪圖系統(tǒng) ??數(shù)據(jù)導(dǎo)入??三維繪圖系統(tǒng)
- 自定義控件:坐標(biāo)控件??坐標(biāo)列表控件??多組數(shù)據(jù)繪圖系統(tǒng)??極坐標(biāo)??繪圖風(fēng)格??風(fēng)格控件
- 圖表類(lèi)型和風(fēng)格:散點(diǎn)圖和條形圖??混合類(lèi)型圖表??多子圖??定制繪圖風(fēng)格
- 坐標(biāo)設(shè)置進(jìn)階:動(dòng)態(tài)更新組件??導(dǎo)入外部文件??導(dǎo)入txt
- 動(dòng)圖繪制:動(dòng)圖繪制??實(shí)現(xiàn)動(dòng)圖繪制系統(tǒng)
- 坐標(biāo)列表進(jìn)階:導(dǎo)出數(shù)據(jù)??系統(tǒng)菜單??批量文件導(dǎo)入??輔助坐標(biāo)軸
- 繪圖類(lèi)型進(jìn)階:坐標(biāo)映射??八種繪圖函數(shù)??坐標(biāo)和繪圖函數(shù)設(shè)置??所有繪圖函數(shù)
到了這里,關(guān)于python繪圖系統(tǒng)27:matplotlib中平面坐標(biāo)、極坐標(biāo)和三維坐標(biāo)的所有繪圖函數(shù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!