python使用matplotlib繪制等高線圖的兩種方法
前提條件:
- 所需的庫(kù)matplotlib.pyplot,numpy
- 已導(dǎo)入數(shù)據(jù),我是用np.loadtxt()導(dǎo)入的
- 最重要的contour()和contourf()函數(shù)(不了解可以先去了解下再看~)
第一種很簡(jiǎn)單,等高線圖其實(shí)需要三種數(shù)據(jù)(x,y,z),其中x,y是圖中點(diǎn)的坐標(biāo),z是具體(x,y)點(diǎn)的值。
從這點(diǎn)來(lái)看:當(dāng)我們擁有一個(gè)數(shù)據(jù)時(shí),比如這樣:
0 1 2 3 ... 297 298 299 300 0 1063.0 1076.0 1083.0 1087.0 ... 999.0 998.0 992.0 992.0 1 1059.0 1067.0 1074.0 1085.0 ... 999.0 998.0 994.0 996.0 2 1053.0 1060.0 1065.0 1079.0 ... 999.0 997.0 993.0 996.0 3 1058.0 1063.0 1075.0 1083.0 ... 999.0 995.0 992.0 994.0 4 1056.0 1076.0 1091.0 1101.0 ... 999.0 994.0 989.0 991.0 .. ... ... ... ... ... ... ... ... ... 196 832.0 831.0 831.0 834.0 ... 1255.0 1252.0 1266.0 1287.0 197 838.0 834.0 835.0 838.0 ... 1230.0 1227.0 1246.0 1271.0 198 844.0 836.0 836.0 840.0 ... 1204.0 1223.0 1242.0 1254.0 199 847.0 841.0 840.0 843.0 ... 1202.0 1205.0 1222.0 1246.0 200 846.0 844.0 842.0 845.0 ... 1204.0 1201.0 1213.0 1240.0 [201 rows x 301 columns]
一共有201行,301列,繪制等高線圖前就可以:
xx = np.linspace(0, 300, 301) yy = np.linspace(0, 200, 201) X, Y = np.meshgrid(xx, yy, indexing='ij') fig,ax=plt.subplots() contourf=ax.contourf(X,Y,txt,cmap=plt.get_cmap('RdYlGn_r')) contour=ax.contour(X,Y,txt,colors="k",linewidths=.5)
另外一種比較難的方法,我使用到了插值擬合:
首先由已知數(shù)據(jù)推測(cè)出一個(gè)擬合的公式:
x=np.arange(0,201,1)#x代表行 y=np.arange(0,301,1)#y代表列 z=np.array(df)#z中保存所有已知數(shù)據(jù)點(diǎn)的值 #根據(jù)x,y,z求取插值擬合函數(shù) interp = RegularGridInterpolator((x, y), z,bounds_error=False, fill_value=None)
第二步,構(gòu)建網(wǎng)格,為后續(xù)繪制等高線圖用。
xx = np.linspace(0, 200, 300) yy = np.linspace(0, 300, 300) X, Y = np.meshgrid(xx, yy, indexing='ij')
然后就是使用matplolib.pyplot庫(kù)提供的函數(shù)繪圖的過(guò)程啦
fig,ax=plt.subplots() contourf=ax.contourf(X,Y,interp((X,Y)),cmap=plt.get_cmap('RdYlGn_r')) contour=ax.contour(X,Y,interp((X,Y)),colors="k",linewidths=.5)
如果需要添加等高線上的標(biāo)簽可以:
ax.clabel(contour,fontsize=6,colors='k')
添加顏色條可以:
plt.colorbar(contourf)
最后繪制出來(lái)就是這個(gè)樣子:
以上就是python使用matplotlib繪制等高線圖的兩種方法的詳細(xì)內(nèi)容,更多關(guān)于python matplotlib等高線圖的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
使用并行處理提升python?for循環(huán)速度的過(guò)程
Python?是一門(mén)功能強(qiáng)大的編程語(yǔ)言,但在處理大規(guī)模數(shù)據(jù)或復(fù)雜計(jì)算任務(wù)時(shí),性能可能成為一個(gè)瓶頸,這篇文章主要介紹了使用并行處理提升python?for循環(huán)速度,需要的朋友可以參考下2023-06-06python GUI庫(kù)圖形界面開(kāi)發(fā)之PyQt5單行文本框控件QLineEdit詳細(xì)使用方法與實(shí)例
這篇文章主要介紹了python GUI庫(kù)圖形界面開(kāi)發(fā)之PyQt5單行文本框控件QLineEdit詳細(xì)使用方法與實(shí)例,需要的朋友可以參考下2020-02-02opencv 形態(tài)學(xué)變換(開(kāi)運(yùn)算,閉運(yùn)算,梯度運(yùn)算)
這篇文章主要介紹了opencv 形態(tài)學(xué)變換(開(kāi)運(yùn)算,閉運(yùn)算,梯度運(yùn)算),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07Python 普通最小二乘法(OLS)進(jìn)行多項(xiàng)式擬合的方法
今天小編就為大家分享一篇Python 普通最小二乘法(OLS)進(jìn)行多項(xiàng)式擬合的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-12-12詳解Python中數(shù)據(jù)庫(kù)管理模塊shelve和dbm的應(yīng)用
作為常用的 python 自帶數(shù)據(jù)庫(kù)管理模塊,shelve 和 dbm 都是非常方便的對(duì)象持久化存儲(chǔ)和檢索工具,本文將從用法、優(yōu)勢(shì)以及不同點(diǎn)等方面進(jìn)行介紹,希望對(duì)大家有所幫助2023-10-10在Python中使用Mako模版庫(kù)的簡(jiǎn)單教程
這篇文章主要介紹了在Python中使用Mako模版庫(kù)的簡(jiǎn)單教程,包括在Django或者Tornado框架中集成Mako的方法,需要的朋友可以參考下2015-04-04