欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python使用matplotlib繪制等高線圖的兩種方法

 更新時(shí)間:2023年11月24日 10:10:25   作者:果_s  
在matplotlib.pyplot 中除了可以繪制常規(guī)圖表如折線、柱狀、散點(diǎn)等,還可以繪制常用在地理上的平面展示地型的等高線圖,在本中,我們將詳細(xì)學(xué)習(xí)matplotlib 繪制等高線圖相關(guān)屬性的學(xué)習(xí),需要的朋友可以參考下

前提條件:

  • 所需的庫(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)文章

最新評(píng)論