使用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...