前往
大廳
主題

GrADS 畫圖的基本設定

2年快點走 | 2021-11-30 09:49:10 | 巴幣 202 | 人氣 1153

前一篇教完了要怎麼 sdfopen 開檔,那其實比較關鍵的是開檔之後的事情啦,也就是所謂的畫圖,那接下來就要介紹說畫圖前有什麼事是我們該做的,又有甚麼什麼設定可以使用,範例如下
我這裡先使用這個
在開完資料後,假設你是對於這份資料的格式以及參數名稱不了解的時候,可以在 GrADS 中打 q ctlinfo 的指令,你其實就可以看到說,資料的經緯網格數、層場、起始時間、變數數量以及名稱,然後在知道些資訊後,就可以做一些比較有趣的事情了。

首先要在 GrADS 中開啟一個新的.gs 檔,例如:!vi test.gs
然後在裡面依序打出你想做的事情,範例如下(我可能打很爛,請見諒,這裡我直接畫12張圖)
'reinit'
'set display color white';*將背景設為白色
'c';*清除
*將想使用的顏色檔放進來
'r_to_b.gs'
*自動化設定-----------------------------------------------------
ln1 = 110 ; ln2 = 130
lt1 = 15  ; lt2 = 35
dx = 1.5
dy = (lt2-lt1)/(ln2-ln1)*dx
unit = (C) ;*cbar單位
datname = 'tmpsfc-273.15' ;*資料名稱
Wsz = 5    ;*字的大小
Wx  = 0.15 ;*字的x大小
ps  = 12   ;*照片數
sta = 0.8  ;*要放標題的間距
boun= 11   ;*預設邊界範圍
k   = 0.7  ;*圖片間距大小
xyz = 1    ;*你選則的是 -p 圖片直的(1)  -l 是橫的(2)
*----------------------------------------------------------------
if xyz=1 ;*Y
x1 = 1 ; y1 = boun-dy-sta
else if xyz =2 ;*X
y1 = 1 ; x1 = boun-dy-sta
endif
*設定世界地圖---------------------------------------------------
'set grads off';'set grid on'
'set vpage off'    ;*關掉自訂義圖片大小
'set mproj scaled' ;*設定投影法
'set map 1 1 4'    ;*set map 顏色 型式 粗細
'set mpdset hires' ;*set mpdset 解析度 高 中 低 hires mres lowers
'set xlint 5';'set ylint 4' ;*自己改XY軸間距
*畫圖-----------------------------------------------------------
i=1
while (i<=ps)
*將圖片畫在想畫的位子-------------------------------------------
'set parea 'x1' 'x1+dx' 'y1' 'y1+dy''
*設定經緯時間層數-----------------------------------------------
'set lon 'ln1' 'ln2'' ; 'set lat 'lt1' 'lt2'' ; 'set t 'i''
*設定色塊-------------------------------------------------------
'set gxout shaded'
*設色塊數值
'set clevs  0 3 6 9 12 15 18 21 24 27 30 33'
*設色塊顏色(自訂義)
'set ccols 21 22 24 25 26 27 28 29 30 32 33 34 35'
'd 'datname''
*設定等值線-----------------------------------------------------
'set gxout contour'
'set ccolor 0';*改顏色
'set cthick 4';*改粗細
'set cint 3';*起始間距
'set clskip 6';*改間距
'd 'datname''
*畫標題----------------------------------------------------------
'draw title 'i''
*下次回圈前運算--------------------------------------------------
i=i+1
if xyz=1 ;*Y
x1=x1+dx+1
if i =  4;y1=y1-dy-k;x1=1;endif
if i =  7;y1=y1-dy-k;x1=1;endif
if i = 10;y1=y1-dy-k;x1=1;endif
else if xyz =2 ;*X
y1=y1+dx+1
if i =  4;x1=x1-dy-k;y1=1;endif
if i =  7;x1=x1-dy-k;y1=1;endif
if i = 10;x1=x1-dy-k;y1=1;endif
endif
endwhile
*----------------------------------------------------------------
*跑cbar(有三種不同的) 大小 直或斜  X Y
if xyz=1 ;*Y
'run ../cbarn 0.8 0 'x1-dx*3' 'y1-0.75'' ;*Y
*設定自訂義的文字在特定區域大小---------------------------------
'set string 1 l 'Wsz' 0';* 顏色 樣式 大小 角度
'set strsiz 'Wx' 'Wx*1.5'';* X,Y 大小
'draw string 'x1-dx-0.2' 'y1-0.65' 'unit'';*'draw string x y 想打得字'
else if xyz =2 ;*X
'run ../cbarn 1 1 'x1-dx+0.3' 'y1-dy*3'' ;*x
*設定自訂義的文字在特定區域大小---------------------------------
'set string 1 l 'Wsz+1' 0';* 顏色 樣式 大小 角度
'set strsiz 'Wx' 'Wx*1.5'';* X,Y 大小
'draw string 'x1-dx+0.1' 'y1-dy*1' 'unit'';*'draw string x y 想打得字'
endif
'set parea off'
---------------------------------------------------------------------------------------
無註解版
'reinit'
'set display color white'
'c'
'r_to_b.gs'
ln1 = 110 ; ln2 = 130
lt1 = 15  ; lt2 = 35
dx = 1.5
dy = (lt2-lt1)/(ln2-ln1)*dx
unit = (C)
datname = 'tmpsfc-273.15'
Wsz = 5
Wx  = 0.15
ps  = 12
sta = 0.8
boun= 11
k   = 0.7
xyz = 1

if xyz=1
x1 = 1 ; y1 = boun-dy-sta
else if xyz =2
y1 = 1 ; x1 = boun-dy-sta
endif

'set grads off';'set grid on'
'set vpage off'
'set mproj scaled'
'set map 1 1 4'
'set mpdset hires'
'set xlint 5';'set ylint 4'

i=1
while (i<=ps)
'set parea 'x1' 'x1+dx' 'y1' 'y1+dy''
'set lon 'ln1' 'ln2'' ; 'set lat 'lt1' 'lt2'' ; 'set t 'i''

'set gxout shaded'
'set clevs  0 3 6 9 12 15 18 21 24 27 30 33'
'set ccols 21 22 24 25 26 27 28 29 30 32 33 34 35'
'd 'datname''

'set gxout contour'
'set ccolor 0'
'set cthick 4'
'set cint 3'
'set clskip 6'
'd 'datname''

'draw title 'i''

i=i+1
if xyz=1
x1=x1+dx+1
if i =  4;y1=y1-dy-k;x1=1;endif
if i =  7;y1=y1-dy-k;x1=1;endif
if i = 10;y1=y1-dy-k;x1=1;endif
else if xyz =2
y1=y1+dx+1
if i =  4;x1=x1-dy-k;y1=1;endif
if i =  7;x1=x1-dy-k;y1=1;endif
if i = 10;x1=x1-dy-k;y1=1;endif
endif
endwhile

if xyz=1
'run ../cbarn 0.8 0 'x1-dx*3' 'y1-0.75''
'set string 1 l 'Wsz' 0'
'set strsiz 'Wx' 'Wx*1.5''
'draw string 'x1-dx-0.2' 'y1-0.65' 'unit''
else if xyz =2
'run ../cbarn 1 1 'x1-dx+0.3' 'y1-dy*3''
'set string 1 l 'Wsz+1' 0';
'set strsiz 'Wx' 'Wx*1.5'';
'draw string 'x1-dx+0.1' 'y1-dy*1' 'unit''
endif
'set parea off'
---------------------------------------------------------------------------------------
底板為直的話
'reinit'
'set display color white'
'c'
'rgb.gs'
ln1 = 110 ; ln2 = 130
lt1 = 15  ; lt2 = 35
dx = 1.5
dy = (lt2-lt1)/(ln2-ln1)*dx
unit = (C)
Wsz = 5
Wx  = 0.15
ps  = 12
sta = 0.8
boun= 11
k   = 0.7
xyz = 1

x1 = 1 ; y1 = boun-dy-sta

'set grads off';'set grid on'
'set vpage off'
'set mproj scaled'
'set map 1 1 4'
'set mpdset hires'
'set xlint 5';'set ylint 4'

i=1
while (i<=ps)
'set parea 'x1' 'x1+dx' 'y1' 'y1+dy''
'set lon 'ln1' 'ln2'' ; 'set lat 'lt1' 'lt2'' ; 'set t 'i''

'set gxout shaded'
'set clevs  0 3 6 9 12 15 18 21 24 27 30 33'
'set ccols 21 22 24 25 26 27 28 29 30 32 33 34 35'
'd tmpsfc-273.15'

'set gxout contour'
'set ccolor 0'
'set cthick 4'
'set cint 3'
'set clskip 6'
'd tmpsfc-273.15'

'draw title 'i''

i=i+1
x1=x1+dx+1
if i =  4;y1=y1-dy-k;x1=1;endif
if i =  7;y1=y1-dy-k;x1=1;endif
if i = 10;y1=y1-dy-k;x1=1;endif
endwhile

'run ../cbarn 0.8 0 'x1-dx*3' 'y1-0.75''
'set string 1 l 'Wsz' 0'
'set strsiz 'Wx' 'Wx*1.5''
'draw string 'x1-dx-0.2' 'y1-0.65' 'unit''
'set parea off'

大家可能很好奇color bar 為甚麼沒跑出來,那是因為你沒將他下載下來,以下是它的下載網址,裡面有很多酷酷的東西,我就不做介紹了 http://cola.gmu.edu/grads/gadoc/library.html
這裡會使用到的 color bar 有 :
cbar.gs : ftp://cola.gmu.edu/grads/scripts/cbar.gs
cbarn.gs : ftp://cola.gmu.edu/grads/scripts/cbarn.gs
cbarm.gs : ftp://cola.gmu.edu/grads/scripts/cbarm.gs

接下來應該是顏色怎麼出不來的問題吧,因為我是自己自訂顏色的
*light 藍色、黃橘紅 自訂數字(X) R G B

'set rgb 20 0 108 127'
'set rgb 21 49 117 137'
'set rgb 22 77 143 172'
'set rgb 23 93 140 174'
'set rgb 24 125 185 222'

'set rgb 25 182 242 160'
'set rgb 26 220 252 167'
'set rgb 27 245 231 110'
'set rgb 28 250 220 99'
'set rgb 29 255 189 92'
'set rgb 30 250 186 75'

'set rgb 31 255 179 167'
'set rgb 32 245 145 132'
'set rgb 33 244 121 131'
'set rgb 34 208 90 110'
'set rgb 35 201 55 86'

如果不喜歡也可以自己上網去找,然後去改你喜歡的RGB就好了,以下是別人的


創作回應

更多創作