Untuk memplot banyak panel di GrADS, kita bisa menggunakan perintah set parea
1 atau set vpage
2. Fungsi keduanya serupa, namun implementasinya tidak sama dan kadang mungkin cukup membingungkan bagi yang baru belajar GrADS.
Sederhananya, set parea
memungkinkan kita untuk lebih leluasa untuk memplot beberapa panel sesuai dengan ukuran dan posisi display. Namun, kita harus mengerti di posisi mana dan koordinat display berapa panel tersebut ingin di plot.
Di lain sisi, perintah set vpage
lebih memudahkan kita dalam melakukan plotting sebanyak panel yang ingin kita plot. Perintah ini akan menentukan sendiri posisi panel sesuai dengan urutan yang kita inginkan. Perintah ini terdengar lebih menjanjikan karena kita tinggal menginput berapa banyak panel yang ingin diplot, dan vpage
dengan sendirinya akan menentukan posisi dan koordinat display panel tersebut. Namun, perintah ini justru sering menghasilkan ruang kosong antar panel dan kita tidak bisa leluasa untuk mengatur colorbar
3 karena pasti akan terplot di panel terakhir.
GrADS display
Terdapat dua posisi display di GrADS, yaitu posisi landscape dan posisi portrait.
GrADS display. 11 x 8.5 merupakan koordinat display tanpa satuan.
Dalam postingan ini, kita akan fokus pada posisi landscape.
Looping menggunakan set parea
Jika kita ingin melakukan banyak plot di satu display, jelas sangat melelahkan untuk mengaturnya satu persatu. Maka, kita bisa memanfaatkan metode iterasi menggunakan perintah while
di GrADS. Perlu dicatat bahwa metode iterasi di GrADS hanya while
loop, tidak ada perintah for
loop.
Pada contoh di bawah, kita akan mencoba memplot 8 panel (2 baris x 4 kolom) hasil dari olah data budget air atmosfer. Tampilan outputnya akan seperti ini.
Output diatas bisa kita peroleh jika didalam folder instalasi GrADS sudah terdapat script tambahan sebagai berikut.
plot.gs
legend.gs
parsestr.gsf
(agar scriptplot.gs
danlegend.gs
bisa dijalankan)
File script diatas bisa diperoleh melalui link berikut Bin Guan’s GrADS Script Library. Karena merupakan script tambahan, kita harus menambahkan sendiri di folder instalasi GrADS (~\OpenGrADS-2.2\Contents\Resources\Scripts
).
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
'reinit'
*-------------
*Setting parea
*-------------
*Setting according to the landscape coordinate display
*Important steps!
*Setting x coordinate
sxx=1 ;*left boundary
exx=10.8 ;*right boundary
ddxx=0.2 ;*distance/space between horizontal panel
dxx=((exx-sxx)/4)-ddxx ;*length for one panel
x1.1=sxx; x2.1=x1.1+dxx; xr1=x1.1' 'x2.1
x1.2=x2.1+ddxx; x2.2=x1.2+dxx; xr2=x1.2' 'x2.2
x1.3=x2.2+ddxx; x2.3=x1.3+dxx; xr3=x1.3' 'x2.3
x1.4=x2.3+ddxx; x2.4=x1.4+dxx; xr4=x1.4' 'x2.4
*Setting y coordinate
syy=7.8 ;*upper boundary
eyy=1 ;*lower boundary
ddyy=1.2 ;*distance/space between vertical panel
dyy=((syy-eyy)/2)-ddyy ;*height for one panel
y2.1=syy; y1.1=y2.1-dyy; yr1=y1.1' 'y2.1
y2.2=y1.1-ddyy; y1.2=y2.2-dyy; yr2=y1.2' 'y2.2
y2.3=y1.2-ddyy; y1.3=y2.3-dyy; yr3=y1.3' 'y2.3
y2.4=y1.3-ddyy; y1.4=y2.4-dyy; yr4=y1.4' 'y2.4
*Setting x & y coordinate
p.1.1=xr1' 'yr1; p.2.1=xr2' 'yr1; p.3.1=xr3' 'yr1; p.4.1=xr4' 'yr1;
p.1.2=xr1' 'yr2; p.2.2=xr2' 'yr2; p.3.2=xr3' 'yr2; p.4.2=xr4' 'yr2;
p.1.3=xr1' 'yr3; p.2.3=xr2' 'yr3; p.3.3=xr3' 'yr3; p.4.3=xr4' 'yr3;
p.1.4=xr1' 'yr4; p.2.4=xr2' 'yr4; p.3.4=xr3' 'yr4; p.4.4=xr4' 'yr4;
*----------
*Input file
*----------
'sdfopen D:\#graphic_mb.nc'
timelag = '1 21'
timelaglab = '-10 10'
*----------
*Setting some components for additional scripts
*----------
ptextmarksize = '-t E-P `36`1<q>/`36`1t `371`1<qV> `36`1<q>/`36`1t_sig@95% `371`1<qV>_sig@95% -m 0 0 0 1 1 -z 0.05 0.05 0.05 0.06 0.06 -c 1 2 3 2 3'
prange = '-r -12 12'
xlint = '4'; ylint = '4'
xycfg = '1 3 0.15'
*----------
*Setting the label
*----------
label.1.1 = '(a)RA (CS)'; label.2.1 = '(b)RB (CS)'
label.3.1 = '(c)RC (CS)'; label.4.1 = '(d)RD (CS)'
label.1.2 = '(e)RA (CENS)'; label.2.2 = '(f)RB (CENS)'
label.3.2 = '(g)RC (CENS)'; label.4.2 = '(h)RD (CENS)'
*----------
*Adjust the variables (in accordance to your data)
*----------
var.1.1 = '-v (-1*ecsmeanra-tpcsmeanra)*24*1000 pwdtcsmeanra*24*3600 vimfdcsmeanra*24*3600 maskout(pwdtcsmeanra*24*3600,0.05-pwdtcspvalra) maskout(vimfdcsmeanra*24*3600,0.05-vimfdcspvalra)';
var.2.1 = '-v (-1*ecsmeanrb-tpcsmeanrb)*24*1000 pwdtcsmeanrb*24*3600 vimfdcsmeanrb*24*3600 maskout(pwdtcsmeanrb*24*3600,0.05-pwdtcspvalrb) maskout(vimfdcsmeanrb*24*3600,0.05-vimfdcspvalrb)';
var.3.1 = '-v (-1*ecsmeanrc-tpcsmeanrc)*24*1000 pwdtcsmeanrc*24*3600 vimfdcsmeanrc*24*3600 maskout(pwdtcsmeanrc*24*3600,0.05-pwdtcspvalrc) maskout(vimfdcsmeanrc*24*3600,0.05-vimfdcspvalrc)';
var.4.1 = '-v (-1*ecsmeanrd-tpcsmeanrd)*24*1000 pwdtcsmeanrd*24*3600 vimfdcsmeanrd*24*3600 maskout(pwdtcsmeanrd*24*3600,0.05-pwdtcspvalrd) maskout(vimfdcsmeanrd*24*3600,0.05-vimfdcspvalrd)';
var.1.2 = '-v (-1*ecensmeanra-tpcensmeanra)*24*1000 pwdtcensmeanra*24*3600 vimfdcensmeanra*24*3600 maskout(pwdtcensmeanra*24*3600,0.05-pwdtcenspvalra) maskout(vimfdcensmeanra*24*3600,0.05-vimfdcenspvalra)';
var.2.2 = '-v (-1*ecensmeanrb-tpcensmeanrb)*24*1000 pwdtcensmeanrb*24*3600 vimfdcensmeanrb*24*3600 maskout(pwdtcensmeanrb*24*3600,0.05-pwdtcenspvalrb) maskout(vimfdcensmeanrb*24*3600,0.05-vimfdcenspvalrb)';
var.3.2 = '-v (-1*ecensmeanrc-tpcensmeanrc)*24*1000 pwdtcensmeanrc*24*3600 vimfdcensmeanrc*24*3600 maskout(pwdtcensmeanrc*24*3600,0.05-pwdtcenspvalrc) maskout(vimfdcensmeanrc*24*3600,0.05-vimfdcenspvalrc)';
var.4.2 = '-v (-1*ecensmeanrd-tpcensmeanrd)*24*1000 pwdtcensmeanrd*24*3600 vimfdcensmeanrd*24*3600 maskout(pwdtcensmeanrd*24*3600,0.05-pwdtcenspvalrd) maskout(vimfdcensmeanrd*24*3600,0.05-vimfdcenspvalrd)';
*--------------
*Start plotting
*--------------
*Core steps!
ir = 1
while (ir<=2) ;*looping for row
say 'ROW KE 'ir ;*for monitor
ic = 1
while (ic<=4)
'set parea 'p.ic.ir
say 'parea 'p.ic.ir ;*for monitor
'set t 'timelag
'set grads off'
'set grid off'
'set timelab off'
'set datawarn off' ;*ignore the missing values from data
'set xaxis 'timelaglab
'set xlint 'xlint ;*for x label interval
'set strsiz 0.18 0.2'
'set string 1 l 5 0'
'draw string 'x1.ic' 'y2.ir+0.2' 'label.ic.ir ;*draw the title
'set xlopts 'xycfg; 'set ylopts 'xycfg ;*adjust the x&ylabel
if ic = 1 ;*looping for column
'set ylint 'ylint ;*for y label interval
'plot 'var.ic.ir' 'prange' 'ptextmarksize
'draw xlab jeda waktu'
'draw ylab (mm/day)'
'define mask = const(maskout(vimfdcspvalra,0.05-vimfdcspvalra),1)' ;*plotting the statistical significance output (ignore this command)
else
'set ylab off'
'plot 'var.ic.ir' 'prange' 'ptextmarksize ;*plotting the main variable
'draw xlab jeda waktu'
endif
'set ylab on'
ic = ic+1
endwhile
ir = ir+1
endwhile
'legend -orient h -xo -8 -yo -3.2 -scale 0.4' ;*show the legend
'printim D:\mb_mean.svg white' ;*print the output
Comments powered by Disqus.