python使用matplotlib繪制等高線圖的兩種方法
前提條件:
- 所需的庫matplotlib.pyplot,numpy
- 已導入數(shù)據(jù),我是用np.loadtxt()導入的
- 最重要的contour()和contourf()函數(shù)(不了解可以先去了解下再看~)
第一種很簡單,等高線圖其實需要三種數(shù)據(jù)(x,y,z),其中x,y是圖中點的坐標,z是具體(x,y)點的值。
從這點來看:當我們擁有一個數(shù)據(jù)時,比如這樣:
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ù)推測出一個擬合的公式:
x=np.arange(0,201,1)#x代表行 y=np.arange(0,301,1)#y代表列 z=np.array(df)#z中保存所有已知數(shù)據(jù)點的值 #根據(jù)x,y,z求取插值擬合函數(shù) interp = RegularGridInterpolator((x, y), z,bounds_error=False, fill_value=None)
第二步,構建網(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庫提供的函數(shù)繪圖的過程啦
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)
如果需要添加等高線上的標簽可以:
ax.clabel(contour,fontsize=6,colors='k')
添加顏色條可以:
plt.colorbar(contourf)
最后繪制出來就是這個樣子:
以上就是python使用matplotlib繪制等高線圖的兩種方法的詳細內容,更多關于python matplotlib等高線圖的資料請關注腳本之家其它相關文章!
相關文章
使用并行處理提升python?for循環(huán)速度的過程
Python?是一門功能強大的編程語言,但在處理大規(guī)模數(shù)據(jù)或復雜計算任務時,性能可能成為一個瓶頸,這篇文章主要介紹了使用并行處理提升python?for循環(huán)速度,需要的朋友可以參考下2023-06-06python GUI庫圖形界面開發(fā)之PyQt5單行文本框控件QLineEdit詳細使用方法與實例
這篇文章主要介紹了python GUI庫圖形界面開發(fā)之PyQt5單行文本框控件QLineEdit詳細使用方法與實例,需要的朋友可以參考下2020-02-02opencv 形態(tài)學變換(開運算,閉運算,梯度運算)
這篇文章主要介紹了opencv 形態(tài)學變換(開運算,閉運算,梯度運算),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-07-07詳解Python中數(shù)據(jù)庫管理模塊shelve和dbm的應用
作為常用的 python 自帶數(shù)據(jù)庫管理模塊,shelve 和 dbm 都是非常方便的對象持久化存儲和檢索工具,本文將從用法、優(yōu)勢以及不同點等方面進行介紹,希望對大家有所幫助2023-10-10