亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時間:2023年11月24日 10:10:25   作者:果_s  
在matplotlib.pyplot 中除了可以繪制常規(guī)圖表如折線、柱狀、散點等,還可以繪制常用在地理上的平面展示地型的等高線圖,在本中,我們將詳細學習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等高線圖的資料請關注腳本之家其它相關文章!

相關文章

最新評論