Rev 15738 | Rev 17945 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
20 | reyssat | 1 | !if $wims_read_parm!=slib_header |
13586 | bpr | 2 | !goto proc |
20 | reyssat | 3 | !endif |
4 | |||
4330 | bpr | 5 | slib_author=Adeline, Grelot ; Bernadette, Perrin-Riou; Sophie, Lemaire |
20 | reyssat | 6 | |
11400 | bpr | 7 | slib_example= [10,5,2,3,10,13],[3,4,6,7,12,14,16],xtics [A1,A3,A6,8,10,12,14],ytics 10,color salmon,html\ |
8 | [1,5,2,3,10,13],[3,4,6,7,12,14],xtics [a,b,c,d,e,f],ytics 10,color salmon,html\ |
||
9 | [1,5,2,3,10,13],[3,4,6,7,12,14,22],xtics,ytics 15,color blue,html\ |
||
10 | [1,5,2,3,10,13],[3,4,6,7,12,14,22],xtics [a,b,c,d,e,f],ytics 15,color blue,html\ |
||
4478 | bpr | 11 | [1,5,2,3,10,13],[3,4,6,7,12,14,22],xtics 5,ytics 10,color blue,html\ |
11400 | bpr | 12 | [100,500,2,300,1000,1300],[3,4,6,7,12,14],xtics,ytics 10,baton,color green,html\ |
13 | [0.007,0.005,0.002,0.003,0.0020,0.01],[3,4,6,7,12,14],xtics,ytics 10,stem,color blue,html\ |
||
14 | [1,5,2,3,10,13],[3,4,6,7,12,14,22],xtics,ytics 10,step,color red,html\ |
||
15 | [1,5,2,3,10,13],[3,4,6,7,12,14,22],xtics [a,b,c,d,e,f],ytics 10,step,color red,html\ |
||
4478 | bpr | 16 | [1,5,2,3,10,13],[3,4,6,7,12,14,22],xtics 5,ytics 10,step,color red,html\ |
11400 | bpr | 17 | [1,5,2,3,10,13],[3,4,6,7,12,14],xtics [a,b,c,d,e,f],ytics 10,stem,color blue,html\ |
4478 | bpr | 18 | [1,5,2,3,10,13],[3,4,6,7,12,14],xtics 5,ytics 1,stem,color blue,html\ |
19 | [1,5,2,3,10,13],[3,4,6,7,12,14,14],xtics,ytics,stair,color blue,html\ |
||
11400 | bpr | 20 | [1,5,2],[3,4,6],xtics 10,ytics,stem,color blue,\ |
21 | [1,5,2,3,10,13],[3,4,6,7,12,14],xtics 5,noytics,baton,color green,html |
||
4478 | bpr | 22 | |
20 | reyssat | 23 | !exit |
24 | |||
25 | :proc |
||
26 | |||
27 | slib_parm= |
||
28 | slib_out= |
||
4478 | bpr | 29 | !reset slib_optx, slib_opty, slib_couleur,slib_baton,slib_pdata, slib_grad,slib_listx,slib_listxx, slib_param, slib_parm slib_option, slib_points |
20 | reyssat | 30 | |
11400 | bpr | 31 | slib_data=!item 1 to 2 of $wims_read_parm |
20 | reyssat | 32 | slib_parm= !item 3 to -1 of $wims_read_parm |
33 | |||
34 | !readproc slib/stat/dataproc $slib_data |
||
6901 | bpr | 35 | !!! slib_x, slib_y comes from slib/stat/dataproc |
20 | reyssat | 36 | slib_u= $slib_x |
37 | slib_w= $slib_y |
||
38 | |||
39 | slib_u=!declosing $slib_u |
||
40 | slib_cntu=!itemcnt $slib_u |
||
41 | slib_w=!declosing $slib_w |
||
42 | |||
43 | !if $slib_w=$empty |
||
15737 | bpr | 44 | slib_w=!values x for x=1 to $slib_cntu |
20 | reyssat | 45 | !endif |
46 | |||
47 | slib_cnt=!itemcnt $slib_w |
||
15738 | bpr | 48 | !if $slib_cnt=2 |
20 | reyssat | 49 | slib_begin=!item 1 of $slib_w |
50 | slib_pas=!item 2 of $slib_w |
||
15738 | bpr | 51 | slib_w=!values $slib_begin+x*$slib_pas for x=0 to $[$slib_cntu+1] |
20 | reyssat | 52 | slib_cnt=!itemcnt $slib_w |
53 | !endif |
||
54 | slib_w=!sort numeric item $slib_w |
||
55 | slib_x1=!item 1 of $slib_w |
||
56 | slib_x2=!item -1 of $slib_w |
||
57 | |||
58 | slib_ocnt=!itemcnt $slib_parm |
||
59 | !for slib_i=1 to $slib_ocnt |
||
60 | slib_param=!item $slib_i of $slib_parm |
||
61 | slib_param=!words2items $slib_param |
||
62 | !if xtics isitemof $slib_param |
||
63 | slib_optx=1 |
||
11400 | bpr | 64 | slib_param=!replace internal xtics by $ in $slib_param |
65 | slib_param=!replace internal = by $ in $slib_param |
||
20 | reyssat | 66 | slib_param=!nonempty item $slib_param |
67 | slib_param=!nospace $slib_param |
||
68 | slib_param=!declosing $slib_param |
||
69 | slib_cnt_ticx=!nonempty item $slib_param |
||
70 | slib_c=!itemcnt $slib_cnt_ticx |
||
71 | |||
72 | !if $slib_c=1 |
||
15738 | bpr | 73 | slib_arrondi=!exec pari (f(r,n)= l=if(r != 0, floor(log(abs(r))/log(10)),1) ; s=ceil(10^(-l+n-1)*r) ; s*10^(l-n+1) ); \ |
11418 | bpr | 74 | f(($slib_x2-($slib_x1))/$slib_cnt_ticx,1) |
20 | reyssat | 75 | slib_listx=!values $[$slib_arrondi*floor($slib_x1/$slib_arrondi)]\ |
76 | +x*$slib_arrondi for x=0 to $[$slib_cnt_ticx+1] |
||
77 | slib_listxx=$slib_listx |
||
78 | !else |
||
79 | slib_listx= $slib_param |
||
80 | slib_listxx=$slib_w |
||
11400 | bpr | 81 | !endif slib_c |
20 | reyssat | 82 | !endif xtics |
83 | !if ytics isitemof $slib_param |
||
84 | slib_opty=1 |
||
11400 | bpr | 85 | slib_param=!replace ytics by $ in $slib_param |
20 | reyssat | 86 | slib_param=!nonempty item $slib_param |
11400 | bpr | 87 | slib_param=!words2items $slib_param |
20 | reyssat | 88 | slib_param=!declosing $slib_param |
89 | slib_param=!nonempty item $slib_param |
||
90 | slib_pcnt=!itemcnt $slib_param |
||
91 | !if $slib_pcnt=1 |
||
92 | slib_ra=$slib_param |
||
93 | !endif |
||
94 | !endif ytics |
||
95 | !if color isitemof $slib_param |
||
11400 | bpr | 96 | slib_param=!replace color by $ in $slib_param |
20 | reyssat | 97 | slib_param=!nonempty item $slib_param |
15738 | bpr | 98 | slib_couleur=$slib_param |
20 | reyssat | 99 | !endif |
100 | |||
11400 | bpr | 101 | !if $slib_param iswordof baton stem step stair |
20 | reyssat | 102 | slib_baton=$slib_param |
103 | !endif |
||
11400 | bpr | 104 | !if $slib_param iswordof html url |
4178 | bpr | 105 | slib_option=$slib_param |
106 | !endif |
||
20 | reyssat | 107 | !next slib_i |
108 | |||
109 | !default slib_optx=0 |
||
110 | !default slib_opty=0 |
||
15738 | bpr | 111 | !default slib_couleur=red |
20 | reyssat | 112 | !default slib_listx=$slib_w |
113 | |||
114 | !if $slib_cnt <= $slib_cntu and $slib_baton notwordof baton stem |
||
15738 | bpr | 115 | slib_w=!append item $[$(slib_w[-1])+($(slib_w[-1])-$(slib_w[1]))/10] to $slib_w |
116 | !increase $slib_cnt |
||
20 | reyssat | 117 | !endif |
118 | |||
119 | !default slib_ra=5 |
||
120 | slib_listx=!declosing $slib_listx |
||
121 | slib_y1=0 |
||
122 | slib_y2=0 |
||
123 | slib_uu= |
||
124 | |||
125 | !if $slib_baton iswordof baton stem |
||
126 | slib_ww= |
||
127 | !if $slib_baton iswordof stem |
||
128 | slib_r=0 |
||
129 | !else |
||
15737 | bpr | 130 | slib_r=$[($slib_x2-$slib_x1)/(($slib_cntu)*4)] |
20 | reyssat | 131 | !endif |
15738 | bpr | 132 | !for slib_i=1 to $slib_cntu |
20 | reyssat | 133 | slib_j=!item $slib_i of $slib_w |
134 | slib_ww=!append item $[$slib_j+1-$slib_r],$[$slib_j+1+$slib_r] to $slib_ww |
||
135 | slib_j=!item $slib_i of $slib_u |
||
136 | slib_uu=!append item $slib_j,0 to $slib_uu |
||
137 | !next slib_i |
||
138 | slib_uu=!append item 0 to $slib_uu |
||
139 | slib_w1=$slib_ww |
||
140 | slib_ww=$slib_w |
||
141 | slib_w=$slib_w1 |
||
142 | slib_x1=!item 1 of $slib_w |
||
143 | slib_x2=!item -1 of $slib_w |
||
144 | slib_y2=!sort numeric item $slib_u |
||
11400 | bpr | 145 | slib_y2=!item -1 of $slib_y2 |
20 | reyssat | 146 | slib_cnt=!itemcnt $slib_w |
147 | slib_cnt=$[$slib_cnt+1] |
||
148 | !else |
||
149 | !if $slib_baton iswordof step stair |
||
15737 | bpr | 150 | slib_uu=$slib_u |
151 | slib_x1=!item 1 of $slib_w |
||
152 | slib_x2=!item -1 of $slib_w |
||
153 | slib_y2=!sort numeric item $slib_u |
||
154 | slib_y2=!item -1 of $slib_y2 |
||
155 | slib_cnt=!itemcnt $slib_w |
||
156 | slib_cnt=$[$slib_cnt] |
||
157 | !else |
||
158 | slib_uu= |
||
159 | !for slib_i=1 to $[$slib_cntu] |
||
160 | slib_it=!item $slib_i of $slib_u |
||
161 | slib_inf=!item $slib_i of $slib_w |
||
162 | slib_sup=!item $[$slib_i+1] of $slib_w |
||
163 | slib_it=$[$slib_it/($slib_sup-$slib_inf)] |
||
164 | slib_y2=$[max($slib_y2,$slib_it)] |
||
165 | slib_uu=!append item $slib_it to $slib_uu |
||
166 | !next slib_i |
||
167 | !endif |
||
20 | reyssat | 168 | slib_ww=$slib_w |
169 | |||
170 | !endif |
||
15738 | bpr | 171 | slib_pas=!exec pari (f(r,n)= l=if(r != 0, floor(log(abs(r))/log(10)),1) ; s=ceil(10^(-l+n-1)*r) ; s*10^(l-n+1) ); \ |
4478 | bpr | 172 | f($slib_y2/$slib_ra,1) |
20 | reyssat | 173 | slib_y2=$[$slib_y2*1.1] |
174 | slib_ord=0 |
||
175 | slib_d=$[($slib_x2-$slib_x1)/5] |
||
176 | slib_minx=$[$slib_x1*1.01] |
||
4478 | bpr | 177 | insdraw_size=500,200 |
20 | reyssat | 178 | |
4478 | bpr | 179 | slib_rangex=$[$slib_minx-$slib_d],$[$slib_x2+$slib_d] |
180 | slib_rangey=$[min(1,$slib_y1-($slib_y2-$slib_y1)/5)],$[$slib_y2] |
||
181 | |||
182 | !readproc slib/draw/convpixel 0,5,$insdraw_size,$[$slib_minx-$slib_d],$[$slib_x2+$slib_d],$[min(1,$slib_y1-($slib_y2-$slib_y1)/5)],$[$slib_y2] |
||
183 | slib_pix=$[$slib_y2 -$(slib_out[2])] |
||
184 | |||
20 | reyssat | 185 | !if $slib_opty !=0 |
186 | !for slib_i=1 to $slib_ra |
||
187 | slib_ord=$[$slib_pas+$slib_ord] |
||
188 | !if $slib_ord <$[$slib_y2+$slib_pas] |
||
12152 | bpr | 189 | slib_grad=!append line text black,$[$slib_minx-0.8*$slib_d],$[$slib_ord+$slib_pix],small,$slib_ord to $slib_grad |
4478 | bpr | 190 | slib_grad=!append line segment $[$slib_minx-$slib_d/10],$slib_ord,$[$slib_minx+$slib_d/10],$slib_ord,grey\ |
20 | reyssat | 191 | vline $slib_minx,0,grey to $slib_grad |
192 | !endif |
||
193 | !next slib_i |
||
194 | !endif |
||
195 | !if $slib_optx!=0 |
||
196 | !if $slib_listxx=$empty |
||
15738 | bpr | 197 | slib_listxx=$slib_ww |
20 | reyssat | 198 | !endif |
15738 | bpr | 199 | slib_cnt_ticx=!itemcnt $slib_listxx |
20 | reyssat | 200 | !for slib_i=1 to $[$slib_cnt_ticx] |
201 | slib_wi=!item $slib_i of $slib_listx |
||
202 | slib_wj=!item $slib_i of $slib_listxx |
||
203 | |||
204 | !if $slib_baton iswordof baton stem |
||
205 | slib_wj=$[$slib_wj+1] |
||
206 | !endif |
||
4478 | bpr | 207 | slib_grad=!append line text black,$slib_wj,$[$slib_y1-2*$slib_pix],small,$slib_wi to $slib_grad |
9339 | bpr | 208 | slib_grad=!append line segment $slib_wj,$[$slib_y1-$slib_pix],$slib_wj,$[$slib_y1+$slib_pix], grey to $slib_grad |
20 | reyssat | 209 | !next slib_i |
210 | !endif |
||
211 | |||
4478 | bpr | 212 | slib_pdata=xrange $slib_rangex\ |
213 | yrange $slib_rangey\ |
||
20 | reyssat | 214 | $slib_grad |
215 | !if stair notwordof $slib_baton |
||
216 | slib_pdata=$slib_pdata\ |
||
15738 | bpr | 217 | lines $slib_couleur |
20 | reyssat | 218 | !else |
219 | slib_points= linewidth 4\ |
||
15738 | bpr | 220 | points $slib_couleur |
20 | reyssat | 221 | !endif |
222 | |||
223 | !if stair notwordof $slib_baton and step notwordof $slib_baton |
||
15737 | bpr | 224 | !for slib_i=1 to $[$slib_cnt] |
225 | slib_inf=!item $slib_i of $slib_w |
||
226 | slib_sup=!item $[$slib_i+1] of $slib_w |
||
227 | slib_f=!item $slib_i of $slib_uu |
||
228 | !if $slib_f!=$empty and $slib_sup!=$empty and $slib_inf!=$empty |
||
229 | slib_pdata=!append item $slib_inf,0,$slib_inf,$slib_f,$slib_sup,$slib_f,$slib_sup,0 to $slib_pdata |
||
230 | !endif |
||
20 | reyssat | 231 | !next slib_i |
232 | !endif |
||
233 | !if step iswordof $slib_baton |
||
15737 | bpr | 234 | !for slib_i=1 to $[$slib_cnt] |
235 | slib_inf=!item $[$slib_i] of $slib_w |
||
236 | slib_sup=!item $[$slib_i+1] of $slib_w |
||
237 | slib_f=!item $slib_i of $slib_uu |
||
238 | !if $slib_f!=$empty and $slib_sup!=$empty and $slib_inf!=$empty |
||
239 | slib_pdata=!append item $slib_inf,$slib_f,$slib_sup,$slib_f to $slib_pdata |
||
240 | !endif |
||
20 | reyssat | 241 | !next slib_i |
242 | !endif |
||
243 | !if stair iswordof $slib_baton |
||
15737 | bpr | 244 | !for slib_i=1 to $[$slib_cnt] |
245 | slib_inf=!item $[$slib_i] of $slib_w |
||
246 | slib_sup=!item $[$slib_i+1] of $slib_w |
||
247 | slib_f=!item $slib_i of $slib_uu |
||
248 | !if $slib_f!=$empty and $slib_sup!=$empty and $slib_inf!=$empty |
||
15738 | bpr | 249 | slib_pdata=!append line line $slib_inf,$slib_f,$slib_sup,$slib_f,$slib_couleur to $slib_pdata |
15737 | bpr | 250 | !endif |
251 | !if $slib_i < $[$slib_cnt] |
||
252 | slib_points=!append item $slib_inf,$slib_f to $slib_points |
||
253 | !endif |
||
20 | reyssat | 254 | !next slib_i |
255 | !endif |
||
256 | |||
257 | slib_out=$slib_pdata\ |
||
258 | $slib_points\ |
||
259 | linewidth 1\ |
||
260 | hline 0,0,grey |
||
4178 | bpr | 261 | |
262 | !if url iswordof $slib_option or html iswordof $slib_option |
||
15737 | bpr | 263 | !insdraw $slib_out |
264 | slib_out=$ins_url |
||
265 | !if html iswordof $slib_option |
||
17173 | bpr | 266 | slib_out=<img src="$ins_url" alt=""> |
15737 | bpr | 267 | !else |
4908 | bpr | 268 | slib_out=$slib_out,$insdraw_size |
15737 | bpr | 269 | !endif |
4178 | bpr | 270 | !endif |
271 | |||
11400 | bpr | 272 | !reset insdraw_size |