NCL-python 實作1 - XY plot (下篇)

2019-05-17

經過上篇的4種實力練習後,這裡將進行最後的練習,並做一個總結。
結果如下:

第一行 : filename = Ngl.pynglpath("data") + "/asc/xy.asc"
是 PyNgl 內建進入 PyNGL system 的路徑,
print(Ngl.pynglpath("data")) 會顯示: /work1/ychuang/anaconda3/envs/pyn_env/lib/python3.6/site-packages/ngl/ncarg/data

xy.asc 則是安裝PyNgl 就一併安裝的ASCII檔案,檔案內容如下:

再來則是讀取ASCII檔案的指令,如下說明

重點說明 : 讀取ASCII檔案

data = Ngl.asciiread("檔案名稱",(行,列),"型態") or

array = Ngl.asciiread(filename, dims, type='_', sep=',') 

filename 即檔案名稱,dims 為指定資料的維度,type則是資料型態,可為 'integer', 'float', or 'double' 。sep則可以指定分隔的判斷依據。
而最後回傳給array,是一個 "NumPy array of dims dimensions and of type type"。

後續則是進行陣列創建與賦值的動作,如下:

uv = np.zeros((2,129),'f') -> 透過Numpy創建2*129的浮點數0矩陣 
uv[0,:] = data[:,1]  -> 將讀取的ASCII資料傳遞給uv矩陣
uv[1,:] = data[:,2] 
lon = data[:,0] -> 將讀取的ASCII資料傳遞給lon矩陣
lon = (lon-1) * 360./128. -> 做經度換算

最後則是進行繪圖的程序

重點說明 : "ti" 資源集

resources.tiMainString = "    " resources.tiXAxisString = "longitude" resources.tiYAxisString = "m/s" resources.tiXAxisFontHeightF = 0.02 resources.tiYAxisFontHeightF = 0.02 

"ti" 資源集可以加入標題(tiMainString)、X (tiXAxisString) 和 Y(tiYAxisString) 軸標記以及軸標記的粗細,如tiXAxisFontHeightF 和 tiYAxisFontHeightF。

重點說明 : "xy" 資源集

resources.xyLineColors = [107,24]  resources.xyLineThicknessF = 2.0  resources.xyLabelMode = "Custom"  resources.xyExplicitLabels = ["U","V"] resources.xyLineLabelFontHeightF = 0.02 resources.xyLineLabelFontColor = 2 

"xyLineColors" 與 "xyLineThicknessF" 已經介紹過是進行線條顏色與粗細的控制。
"xyLabelMode " 當此處設定為 "Custom "時,代表您可以客製化自己要的標籤,而客製化的內容則是 "xyExplicitLabels" 中設定。
"xyLineLabelFontHeightF" 與 "xyLineLabelFontColor" 則是調整自設定標籤的大小與顏色。

重點說明 : 結束聲明

最後做一個結尾的控制,有些情況下這不是必要,但打上這些可以減少程式出錯的可能性。

del plot 
del resources 
Ngl.end() 

"del" 可以移除掉一些物件,"Ngl.end() "則是將PyNgl進行關閉。 

最後的最後,進行一下系統性的總結吧!

1. 宣告工作站 - 圖形輸出位置

wks_type = "x11" #或是ps,pdf...等

Ngl.open_wks("wks_type","名稱") 

res = Ngl.Resources() #引入資源集

2. 資源控制1 - "ti" 資源集

tiXAxisString & tiYAxisString # 圖軸標籤文字

tiXAxisFontHeightF  & tiYAxisFontHeightF # 圖軸標籤文字大小

tiMainString #圖形標題文字

tiMainFont #圖形標題文字字體

3. 資源控制2 - "xy" 資源集

xyLineColors & xyLineColor #線條顏色控制 

xyLineThicknesses & xyLineThicknessF #線條粗細控制

xyMarkLineModes #mark 模式控制

xyMarkers #mark 樣式控制

xyLabelMode #標籤 模式控制

xyExplicitLabels  #標籤 自定義內容

xyLineLabelFontHeightF  #標籤 大小

xyLineLabelFontColor  #標籤顏色 

4. 圖形輸出

plot = Ngl.xy("工作站",變數1,變數2) 

5. 結束宣告
del plot
del resources
Ngl.end()  

Miller : hhjoy222@gmail.com
Webnode 提供技術支援
免費建立您的網站! 此網站是在 Webnode 上建立的。今天開始免費建立您的個人網站 立即開始