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)文章
yolov5訓(xùn)練時(shí)參數(shù)workers與batch-size的深入理解
最近再學(xué)習(xí)YOLOv3與YOLOv5訓(xùn)練數(shù)據(jù)集的具體步驟,幾經(jīng)波折終于實(shí)現(xiàn)了很好的效果,這篇文章主要給大家介紹了關(guān)于yolov5訓(xùn)練時(shí)參數(shù)workers與batch-size的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-03-03
Python RuntimeWarning:invalid value encounter
這篇文章主要介紹了Python RuntimeWarning:invalid value encountered in double_scalars處理,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06
基于python的漢字轉(zhuǎn)GBK碼實(shí)現(xiàn)代碼
今天想用python調(diào)用百度框計(jì)算的搜過(guò)結(jié)果,看到了URL里面的漢字用GBK編碼,雖然可以直接在URL里面加入中文,之前也做過(guò)一個(gè)簡(jiǎn)體字轉(zhuǎn)GBK碼的python函數(shù),但還是略嫌麻煩,今天改了一下2012-02-02
詳解python?sklearn中的數(shù)據(jù)預(yù)處理方法
本篇文章主要講解Python的sklearn庫(kù)中常用的數(shù)據(jù)預(yù)處理方法,主要介紹工具中的內(nèi)容,即該庫(kù)中的相關(guān)方法包含的常用接口和基本使用,希望對(duì)大家有所幫助2023-08-08
基于Python在MacOS上安裝robotframework-ride
今天小編就為大家分享一篇關(guān)于基于Python在MacOS上安裝robotframework-ride,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-12-12
python爬蟲(chóng)入門教程--正則表達(dá)式完全指南(五)
要想做爬蟲(chóng),不可避免的要用到正則表達(dá)式,如果是簡(jiǎn)單的字符串處理,類似于split,substring等等就足夠了,可是涉及到比較復(fù)雜的匹配,當(dāng)然是正則的天下,下面這篇文章主要給大家介紹了python爬蟲(chóng)之正則表達(dá)式的相關(guān)資料,需要的朋友可以參考下。2017-05-05
python實(shí)現(xiàn)websocket的客戶端壓力測(cè)試
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)websocket的客戶端壓力測(cè)試,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-06-06
web自動(dòng)化測(cè)試Selenium點(diǎn)擊元素的常用方法
在Web自動(dòng)化測(cè)試中,Selenium提供多種點(diǎn)擊方法,常用的click()方法通過(guò)選中元素并觸發(fā)點(diǎn)擊事件,若click()方法不穩(wěn)定,可以采用JavaScript執(zhí)行點(diǎn)擊或使用ActionChains類模擬鼠標(biāo)點(diǎn)擊,需要的朋友可以參考下2024-09-09

