使用matplotlib對EC資料進行視覺化探索

2021-08-20 18:23:30 字數 3015 閱讀 4708

使用matplotlib繪製ec氣壓層面的等高線圖及3d影象,首先安裝matplotlib庫和numpy庫,這裡略去安裝步驟。

等高線圖製作:

import matplotlib.pyplot as plt

import numpy as np

def height():

f = open('ecpl_2018021500000_h_0200.txt', 'r')

xfile = f.readlines()

z =

for line in xfile:

xsplit =

for item in z:

ndz = np.array(xsplit[::-1])

return ndz

匯入必需的庫,讀取氣壓等高度檔案,這裡的氣壓層資料檔案為乙個包含281*361個高度資料的文字檔案,其包含10°s到60°n,60°e到150°e 200hp氣壓層的高度資料。

首先讀取檔案,並將資料整理成乙個281*361的二維陣列,由於matpoltlib的等高層圖繪製只接受numpy.ndarray格式的資料,再將二維陣列轉換成後者的格式。

def contour():

plt.figure()

plt.title('ecpl 201802150000 200hpheight')

plt.xlabel('longtitude(degree)')

plt.ylabel('latitude(degree)')

#nlon, nlat = coordinate()

x = np.linspace(60, 150, 361)

y = np.linspace(-10, 60, 281)

x, y = np.meshgrid(x, y)

plt.contourf(x, y, height(), 10, alpha=0.9, cmap=plt.get_cmap('winter'))

con = plt.contour(x, y, height(), 10, colors='black')

plt.clabel(con, inline=true, fontsize=7)

plt.show()

if __name__ == '__main__':

contour()

plt.contourf用於建立等高線圖底圖,'10'表示等高線層數,alpha表示影象透明度,cmap用於控制配色方案

#matpoltlib庫自帶配色方案見matpoltlib-colormap

plt.contour和plt.clabel用於建立等高線和標線字,color定義等高線顏色,inline表示數字位於等高線內,fontsize控制字型大小。

生成效果圖:

3d圖製作:

3d圖製作需要axes3d庫,直接安裝mpl_toolkits即可

from mpl_toolkits.mplot3d import axes3d

import matplotlib.pyplot as plt

import numpy as np

def height():

f = open('ecpl_2018021500000_h_0200.txt', 'r')

xfile = f.readlines()

z =

for line in xfile:

xsplit =

for item in z:

nxsplit =

for lst in xsplit:

nlst =

for item in lst:

nitem = float(item)

ndarray = np.array(nxsplit[::-1])

return ndarray

依然是先讀取txt檔案並將資料轉化為numpy.ndarray格式,這裡要注意3d圖製作要保證所有資料格式都為numpy.float64,如等高線圖製作是直接使用numpy.str格式的資料會報錯,所以這裡在讀取完資料後首先將其改為了float格式,再將二維陣列轉化為numpy.ndarray格式。

def tdaxes():

fig = plt.figure()

ax = axes3d(fig)

plt.title('ecpl 201802150000 200hpheight')

plt.xlabel('longtitude(degree)')

plt.ylabel('latitude(degree)')

lon = np.linspace(60, 150, 361)

lat = np.linspace(-10, 60, 281)

lon, lat = np.meshgrid(lon, lat)

h = height()

#z = np.array((lon + lat) / 2)

#print(type(h), type(z))

#print(type(z[0][0]), type(lon[0][0]))

ax.plot_su***ce(lon, lat, h, rstride=1, cstride=1, cmap=plt.cm.coolwarm)

plt.show()

if __name__ == '__main__':

tdaxes()

之後通過ax.plot_su***ce函式製作3d圖,rstride和cstride表示在x、y軸方向的劃分層數,cmap依然控制配色方案,最後畫出的圖如下:

matplotlib 基本使用

1,plot import matplotlib.pyplot as plt import numpy as np numpy庫,製作資料 x np.linspace 1,1,50 y 2 x 1 plt.plot x,y plot.show linspace x,y,n 範圍 x,y n個點 2,...

matplotlib的基本使用

容器層 1 canvas 畫布,位於最底層,使用者一般接觸不到 2 figure 圖,建立在canvas之上 3 axes 座標系 繪圖區,建立在figure之上,圖形繪製在這個範圍 輔助顯示層 最好放在影象層之後編寫 1 起到輔助作用,提高圖的可讀性 2 網格線,圖例,x y軸的標籤,圖的標籤,刻...

matplotlib的使用記錄

隨手記點東西,想到什麼補充什麼。子圖t1 np.arange 0,5,0.1 t2 np.arange 0,5,0.02 plt.figure 1 建立乙個圖,名為1 plt.subplot 2,2,1 在圖1裡面定義2行2列,一共4個子圖位置,取第1個位置 plt.plot t2,np.cos 2...