python中28種極坐標(biāo)繪圖函數(shù)總結(jié)
參考
python35種繪圖函數(shù)總結(jié),3D、統(tǒng)計、流場,實用性拉滿
matplotlib中的畫圖函數(shù),大部分情況下只要聲明坐標(biāo)映射是polar,就都可以畫出對應(yīng)的極坐標(biāo)圖。但極坐標(biāo)和直角坐標(biāo)的坐標(biāo)區(qū)間不同,所以有些數(shù)據(jù)和函數(shù)關(guān)系適合在直角坐標(biāo)系中展示,而有些則適合在及坐標(biāo)中展示。
基礎(chǔ)圖
函數(shù) | 坐標(biāo)參數(shù) | 圖形類別 |
---|---|---|
plot | x,y | 曲線圖 |
stackplot | x,y | 散點圖 |
stem | x,y | 莖葉圖 |
scatter | x,y | 散點圖 |
polar | x,y | 極坐標(biāo)圖 |
step | x,y | 步階圖 |
bar | x,y | 條形圖 |
barh | x,y | 橫向條形圖 |
bar和barh的對偶關(guān)系稍微有些抽象,可以理解為前者是以角度方向為x軸;而barh則是以半徑方向為x軸。
代碼如下
import matplotlib.pyplot as plt import numpy as np x = np.arange(20)/2 y = x fDct = {"plot" : plt.plot, "stackplot": plt.stackplot, "stem" : plt.stem, "scatter" : plt.scatter, "polar": plt.polar, "step" : plt.step, "bar" : plt.bar, "barh" : plt.barh, } fig = plt.figure(figsize=(14,6)) for i,key in enumerate(fDct, 1): ax = fig.add_subplot(2,4,i, projection="polar") fDct[key](x, y) plt.title(key) plt.tight_layout() plt.show()
誤差線
函數(shù) | 坐標(biāo) | 圖形類別 |
---|---|---|
errorbar | x,y,xerr,yerr | 誤差線 |
fill_between | x,y1,y2 | 縱向區(qū)間圖 |
fill_betweenx | y, x1, x2 | 橫向區(qū)間圖 |
代碼如下
x = np.arange(20)/2 y = x y1, y2 = 0.9*y, 1.1*y x1, x2 = 0.9*x, 1.1*x xerr = np.abs([x1, x2])/10 yerr = np.abs([y1, y2])/10 fig = plt.figure(figsize=(12,4)) ax = fig.add_subplot(141, projection='polar') ax.errorbar(x, y, yerr=yerr) plt.title("errorbar with yerr") ax = fig.add_subplot(142, projection='polar') ax.errorbar(x, y, xerr=xerr) plt.title("errorbar with xerr") ax = fig.add_subplot(143, projection='polar') ax.fill_between(x, y1, y2) plt.title("fill_between") ax = fig.add_subplot(144, projection='polar') ax.fill_betweenx(y, x1, x2) plt.title("fill_betweenx") plt.tight_layout() plt.show()
等高線polar
繪圖函數(shù) | 坐標(biāo) | 說明 |
---|---|---|
contour | [x,y,]z | 等高線 |
contourf | [x,y,]z | 填充等高線 |
pcolormesh | [x,y,]z | 偽彩圖 |
由于imshow默認(rèn)其繪圖坐標(biāo)是標(biāo)準(zhǔn)的1x1網(wǎng)格,而在極坐標(biāo)種,這種網(wǎng)格的尺寸會隨著r的增大而增大,從而變得極其不實用,所以下面對極坐標(biāo)圖的演示,就不包含imshow了。
代碼如下
X, Y = np.indices([100,100]) X = X/100*np.pi*2 Y = Y/25 - 2 Z = (1 - np.sin(X) + np.cos(X)**5 + Y**3) * np.exp(-Y**2) fDct = {"contour": plt.contour, "contourf":plt.contourf, "pcolormesh" : plt.pcolormesh} fig = plt.figure(figsize=(9,3)) for i,key in enumerate(fDct, 1): ax = fig.add_subplot(1,3,i, projection='polar') fDct[key](X,Y,Z) plt.title(key) plt.tight_layout() plt.show()
場圖polar
繪圖函數(shù) | 坐標(biāo) | 說明 |
---|---|---|
quiver | x,y,u,v | 向量場圖 |
streamplot | x,y,u,v | 流場圖 |
barbs | x,y,u,v | 風(fēng)場圖 |
代碼如下
Y, X = np.indices([10,10]) X = X/10*np.pi*2.5 Y = Y #Y, X = np.indices([6,6])/0.75 - 4 U = 6*np.sin(X) + Y V = Y - 6*np.sin(X) dct = {"quiver":plt.quiver, "streamplot":plt.streamplot, "barbs" :plt.barbs} fig = plt.figure(figsize=(12,4)) for i,key in enumerate(dct, 1): ax = fig.add_subplot(1,3,i,projection='polar') dct[key](X,Y,U,V) plt.title(key) plt.tight_layout() plt.show()
統(tǒng)計圖
繪圖函數(shù) | 坐標(biāo) | 說明 |
---|---|---|
hist | x | 數(shù)據(jù)直方圖 |
boxplot | x | 箱線圖 |
violinplot | x | 小提琴圖 |
enventplot | x | 平行線疏密圖 |
hist2d | x,y | 二維直方圖 |
hexbin | x,y | 鉆石圖 |
pie | x | 餅圖 |
極坐標(biāo)在繪制直方圖的時候,需要注意其橫坐標(biāo)是以2π為周期的,也就是說隨機變量的最大值和最小值不得相差2π,否則會導(dǎo)致重疊。
由于極坐標(biāo)繪圖本質(zhì)上是一種坐標(biāo)映射,所以并不會把0和360°真正地等同起來,所以在hist2d中,整個圖像并沒有閉合。而最有意思的是餅圖,直接給壓扁了,讓人很難一下子看出不同組分的比例關(guān)系。
代碼如下
x = np.random.standard_normal(size=1000) dct = {"hist" : plt.hist, "violinplot" : plt.violinplot, "boxplot": plt.boxplot} fig = plt.figure(figsize=(10,6)) for i,key in enumerate(dct, 1): ax = fig.add_subplot(2,3,i, projection='polar') dct[key](x) plt.title(key) ax = fig.add_subplot(234, projection='polar') ax.eventplot(x) plt.title("eventplot") x = np.random.randn(5000) y = 1.2 * x + np.random.randn(5000) / 3 ax = fig.add_subplot(235, projection='polar') ax.hist2d(x, y, bins=[np.arange(-3,3,0.1)] * 2) plt.title("hist2d") ax = fig.add_subplot(236, projection='polar') ax.pie([1,2,3,4,5]) plt.title("pie") plt.tight_layout() plt.show()
非結(jié)構(gòu)坐標(biāo)圖
繪圖函數(shù) | 坐標(biāo) | 說明 |
---|---|---|
tricontour | x,y,z | 非結(jié)構(gòu)等高線 |
tricontourf | x,y,z | 非結(jié)構(gòu)化填充等高線 |
tricolor | x,y,z | 非結(jié)構(gòu)化偽彩圖 |
triplot | x,y | 三角連線圖 |
代碼如下
x = np.random.uniform(0, np.pi*2, 256) y = np.random.uniform(-2, 2, 256) z = (1 - np.sin(x) + np.cos(x)**5 + y**3) * np.exp(-y**2) levels = np.linspace(z.min(), z.max(), 7) fig = plt.figure(figsize=(12,4)) ax = fig.add_subplot(141, projection='polar') ax.plot(x, y, 'o', markersize=1, color='lightgrey', alpha=0.5) ax.tricontour(x, y, z, levels=levels) plt.title("tricontour") ax = fig.add_subplot(142, projection='polar') ax.plot(x, y, 'o', markersize=1, color='lightgrey', alpha=0.5) ax.tricontourf(x, y, z, levels=levels) plt.title("tricontourf") ax = fig.add_subplot(143, projection='polar') ax.plot(x, y, 'o', markersize=1, color='lightgrey', alpha=0.5) ax.tripcolor(x, y, z) plt.title("tripcolor") ax = fig.add_subplot(144, projection='polar') ax.triplot(x,y) plt.title("triplot") plt.tight_layout() plt.show()
以上就是python中28種極坐標(biāo)繪圖函數(shù)總結(jié)的詳細(xì)內(nèi)容,更多關(guān)于python極坐標(biāo)的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python中字符串轉(zhuǎn)換為列表的常用方法總結(jié)
本文將詳細(xì)介紹Python中將字符串轉(zhuǎn)換為列表的八種常用方法,每種方法都具有其獨特的用途和適用場景,文中的示例代碼講解詳細(xì),感興趣的可以了解下2023-11-11解決python-docx打包之后找不到default.docx的問題
今天小編就為大家分享一篇解決python-docx打包之后找不到default.docx的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-02-02python將中文數(shù)字轉(zhuǎn)化成阿拉伯?dāng)?shù)字的簡單方法
這篇文章主要給大家介紹了關(guān)于python如何將中文數(shù)字轉(zhuǎn)化成阿拉伯?dāng)?shù)字的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03Scrapy框架爬取Boss直聘網(wǎng)Python職位信息的源碼
今天小編就為大家分享一篇關(guān)于Scrapy框架爬取Boss直聘網(wǎng)Python職位信息的源碼,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-02-02Python數(shù)據(jù)可視化之分析熱門話題“丁克家庭都怎么樣了”
今天小編就以一個數(shù)據(jù)分析師的視角來向大家講述一下年輕人群體對于丁克的態(tài)度以及那些丁克家庭他們的想法是怎么樣的?他們是否有過后悔當(dāng)初的決定,需要的朋友可以參考下2021-06-06