- Optification is done by auto builder now
[gnuplot] / demo / pm3d.dem
1 #
2 # $Id: pm3d.dem,v 1.18.2.1 2007/01/19 17:44:14 mikulik Exp $
3 #
4 # demo for pm3d splotting
5 #
6 # This demo can be directly used if your default terminal supports pm3d, 
7 # like OS/2 Presentation Manager, X11, Linux VGA, Windows.
8 # Otherwise you can use the output to postscript, for example:
9 #       set term push; set term postscript color enhanced
10 #       set out 'pm3d_demo.ps'
11 #       load 'pm3d.dem'
12 #       set out; set term pop
13
14 # Prepared by Petr Mikulik
15 # History:
16 #       - 12. 3. 2003 pm: added demo for corners2color
17 #       -  9. 3. 2002 pm: added demo for ftriangles
18 #       - 31. 1. 2002 pm: removed pm3d/demo and stand-alone pm3d.dem in demo/
19 #       - 29. 1. 2002 joze: added demo for the 4th column
20 #       - 18. 3. 2001 pm: updated for cb-axis
21 #       - 18.11. 2000 pm: updated for 'set colorbox'
22 #       - 03. 3. 2000 joze: updated to show new pm3d features
23 #       - 15. 6. 1999 pm: update for `set pm3d`+`set palette`
24 #       - 29. 4. 1999 pm: the 1st version, directory pm3d/demo
25
26
27 # print "WARNING:  This demo works only on terminals supporting pm3d, i.e. on "
28 # print "--------  OS/2 Presentation Manager, X11, Linux VGA, Windows. Please use"
29 # print "          output to a postscript file otherwise."
30
31 set xlabel "x"
32 set ylabel "y"
33 set key top
34 set border 4095
35 set xrange [-15:15]
36 set yrange [-15:15]
37 set zrange [-0.25:1]
38 set samples 25
39 set isosamples 20
40
41 set title "pm3d demo. Radial sinc function. Default options."
42 set pm3d; set palette
43 #show pm3d
44 #show palette
45 splot sin(sqrt(x**2+y**2))/sqrt(x**2+y**2)
46 pause -1 "Hit return to continue"
47
48 set title "pm3d at s (surface) / ticslevel 0"
49 set ticslevel 0
50 set pm3d at s
51 set cblabel "colour gradient"
52 replot
53 pause -1 "Hit return to continue"
54
55 set title "pm3d at b (bottom)"
56 set pm3d at b
57 replot
58 pause -1 "Hit return to continue"
59
60 set title "unset surface; set pm3d at st (surface and top)"
61 unset surface
62 set pm3d at st
63 replot
64 pause -1 "Hit return to continue"
65
66 unset cblabel
67
68 set title "set pm3d at bstbst (funny combination, only for screen or postscript)"
69 set view 50,50
70 set pm3d at bstbst
71 replot
72 pause -1 "Hit return to continue"
73
74 set title "gray map"
75 set pm3d map
76 set palette gray
77 set samples 100; set isosamples 100
78 replot
79 pause -1 "Hit return to continue"
80
81 set title "gray map, negative"
82 set pm3d map
83 set palette gray negative
84 replot
85 pause -1 "Hit return to continue"
86
87 set title "colour map, using default rgbformulae 7,5,15 ... traditional pm3d (black-blue-red-yellow)"
88 set palette color positive
89 set pm3d map
90 set samples 50; set isosamples 50
91 replot
92 pause -1 "Hit return to continue"
93
94 set title "colour, rgbformulae 3,11,6 ... green-red-violet"
95 set palette rgbformulae 3,11,6
96 replot
97 pause -1 "Hit return to continue"
98
99 set title "colour, rgbformulae 23,28,3  ... ocean (green-blue-white); OK are also all other permutations"
100 set palette rgbformulae 23,28,3
101 replot
102 pause -1 "Hit return to continue"
103
104 set title "colour, rgbformulae 30,31,32 ... color printable on gray (black-blue-violet-yellow-white)"
105 set palette rgbformulae 30,31,32
106 replot
107 pause -1 "Hit return to continue"
108
109 set title "rgbformulae 31,-11,32: negative formula number=inverted color"
110 set palette rgbformulae 31,-11,32
111 replot
112 pause -1 "Hit return to continue"
113 set yrange [*:*] noreverse
114
115
116 reset
117
118 set title "set pm3d scansforward: wrong, because back overwrites front"
119 set pm3d
120 set palette
121 set view 130,10
122 set samples 50; set isosamples 50
123 set border 4095
124 unset surface
125 set pm3d at s scansforward
126 splot sin(sqrt(x**2+y**2))/sqrt(x**2+y**2)
127 pause -1 "Hit return to continue"
128
129 set title "set pm3d scansbackward: correctly looking surface"
130 set xlabel
131 set border 4095
132 set pm3d scansbackward
133 replot
134 pause -1 "Hit return to continue"
135
136
137 set title "set hidden3d"
138 set samples 30; set isosamples 30
139 set hidden3d
140 set pm3d
141 set surface
142 set view 50,220
143 set xrange [-2:2]
144 set yrange [-2:2]
145 splot log(x*x*y*y)
146 pause -1 "Hit return to continue"
147 unset hidden3d
148
149 # draw the surface using pm3d's hidden3d with line type 100
150 unset hidden
151 unset surface
152
153 set title "set pm3d hidden3d <linetype>: pm3d's much faster hidden3d variant"
154 set samples 30; set isosamples 30
155 set pm3d
156 set style line 100 lt 5 lw 0.5
157 set pm3d hidden3d 100
158 set view 50,220
159 set xrange [-2:2]
160 set yrange [-2:2]
161 splot log(x*x*y*y)
162 pause -1 "Hit return to continue"
163 set pm3d nohidden3d
164
165 set title "bad: surface and top are too close together"
166 set xrange [-1:1]
167 set yrange [-1:1]
168 unset hidd
169 set zrange [-15:4]
170 set ticslevel 0
171 set pm3d at st
172 splot log(x*x*y*y)
173 pause -1 "Hit return to continue"
174
175 set title "solution: use independent 'set zrange' and 'set cbrange'"
176 unset surf
177 set cbrange [-15:4]
178 set zrange [-15:60]
179 splot log(x*x*y*y)
180 pause -1 "Press Enter; I will continue by 'set autoscale cb' and much more..."
181 set autoscale cb
182
183 set title "color box is on by default at a certain position"
184 set samples 20; set isosamples 20
185 set autoscale
186 set key on
187 set pm3d
188 set pm3d at s
189 set view 60,30
190 splot y
191 pause -1 "Hit return to continue"
192
193 set title "color box is on again, now with horizontal gradient"
194 set size 0.6,0.6; set origin 0.2,0.25
195 set colorbox horizontal
196 set colorbox user origin 0.1,0.15 size 0.8,0.1
197 set mcbtics 2
198 set grid cb
199 set cblabel "see cblabel, grid cb, mcbtics, ..."
200 replot 
201 pause -1 "Hit return to continue"
202
203 unset cblabel; unset mcbtics; set grid nocb; set colorbox default
204
205 set title "color box is switched off"
206 unset colorbox
207 replot 
208 pause -1 "Hit return to continue"
209
210 set title 'using now "set grid back; unset colorbox"'
211 unset colorbox
212 set pm3d
213 set border 895
214 set grid back
215 replot 
216 pause -1 "Hit return to continue"
217
218 set size 1,1; set origin 0,0
219 set grid layerdefault
220 set xlabel "X LABEL"
221 set ylabel "Y LABEL"
222
223 set sample 11; set isosamples 11
224 set pm3d map
225 set palette
226 set colorbox
227 set lmargin 0
228
229
230 set pm3d flush begin
231 set title "Datafile with different nb of points in scans; pm3d flush begin"
232 set pm3d flush begin noftriangles scansforward
233 splot 'triangle.dat'
234 #show pm3d
235 pause -1 "Hit return to continue"
236
237 set title "Datafile with different nb of points in scans; pm3d flush center"
238 set pm3d flush center scansforward
239 replot
240 pause -1 "Hit return to continue"
241
242 set title "Datafile with different nb of points in scans; pm3d flush end"
243 set pm3d flush end scansforward
244 replot
245 pause -1 "Hit return to continue"
246
247 set grid front
248
249 set pm3d flush begin
250 set title "Data with different nb of points in scans; pm3d ftriangles flush begin"
251 set pm3d flush begin ftriangles scansforward
252 splot 'triangle.dat'
253 #show pm3d
254 pause -1 "Hit return to continue"
255
256 set title "Data with different nb of points in scans; pm3d ftriangles flush center"
257 set pm3d flush center ftriangles scansforward
258 replot
259 pause -1 "Hit return to continue"
260
261 set title "Data with different nb of points in scans; pm3d ftriangles flush end"
262 set pm3d flush end ftriangles scansforward
263 replot
264 pause -1 "Hit return to continue"
265
266 set title "Using interpolation with datafile; pm3d map interpolate 2,1"
267 set pm3d flush begin noftriangles scansforward interpolate 2,1
268 replot
269 pause -1 "Hit return to continue"
270
271 set title "Using interpolation with datafile; pm3d map ftriangles interpolate 10,1"
272 set pm3d flush begin ftriangles scansforward interpolate 10,1
273 replot
274 pause -1 "Hit return to continue"
275
276 set title "Using interpolation with datafile; pm3d at s ftriangles interpolate 10,1"
277 set pm3d flush begin ftriangles scansforward at s interpolate 10,1
278 set view 20,20
279 replot
280 pause -1 "Hit return to continue"
281
282 reset
283
284 set title "only for enhanced terminals: 'set format cb ...'"
285 set xlabel "X"
286 set ylabel "Y"
287 set sample 31; set isosamples 31
288 set xrange [-185:185]
289 set yrange [-185:185]
290 set format cb "%.01t*10^{%T}"
291 unset surface
292 set border 4095
293 set ticslevel 0
294 set pm3d at s; set palette gray
295 set cblabel "the colour gradient"
296 splot abs(x)**3+abs(y)**3
297 pause -1 "Hit return to continue"
298
299 unset cblabel
300
301 set pal color
302 set xrange [*:*]; set yrange [*:*]
303 set title "function 'x+y' using all colors available, 'set pal maxcolors 0'"
304 set pal maxcolors 0
305 splot x+y
306 pause -1 "Hit return to continue"
307
308 set xrange [*:*]; set yrange [*:*]
309 set title "function 'x+y' using only 5 colors, 'set pal maxcolors 5'"
310 set pal maxcolors 5
311 splot x+y
312 pause -1 "Hit return to continue"
313
314 set pal maxcolors 0
315 unset pm3d
316 set surface
317 set format z
318 set palette
319 set title "color lines: 'splot sin(y)/(y) with lines palette'"
320 set ticslevel 0
321 set border 4095
322 set xrange [-10:10]; set yrange [-10:10]
323 set hidden3d
324 set isosamples 40,40; set samples 40,40
325 splot sin(y)/(y) w lines palette
326 pause -1 "Hit return to continue"
327
328 reset
329
330 set title "Demo for clipping of 2 rectangles comes now. The xrange is [0:2]..."
331 set pm3d; set palette
332 set pm3d map
333
334 set xrange [0:2]
335 splot 'clip14in.dat'
336 pause -1 "Hit return to continue"
337
338 set xrange [0:1.5]
339 set yrange [*:*]
340 set title "...and now xrange is [0:1.5] and 'set pm3d clip1in'"
341 set pm3d clip1in
342 replot
343 pause -1 "Hit return to continue"
344
345 set title "...now xrange is [0:1.5] and 'set pm3d clip4in'"
346 set pm3d clip4in
347 replot
348 pause -1 "Hit return to continue"
349
350
351 reset
352
353 sinc(u,v) = sin(sqrt(u**2+v**2)) /sqrt(u**2+v**2)
354
355 set sam 40
356 set iso 40
357
358 set title "pm3d explicit mode --- coloring according to the 4th parameter of 'using'"
359 set ticslevel 0
360
361 set pm3d at s explicit
362
363 #       'binary2' binary u 1:2:(column(3)+column(-1)/20.0):3 w pm3d, 
364
365 splot \
366         'binary2' binary u 1:2:3:($2+($1+$2)/10) w pm3d, \
367         1+sinc(x*4, y*4) w l
368 pause -1 "Hit return to continue"
369
370 set title "coloring according to the 3rd 'using' parameter (left) and to the z-value (bottom)"
371 set border 895
372 splot \
373     'binary2' binary u 2:(12 - column(3) * 10):1 notitle w lines, \
374     'binary2' binary u (-12 + column(3) * 10):2:1:(-12 + column(3) * 10) notitle w pm3d, \
375     'binary2' binary u 1:2:(column(3) * 10 - 12) notitle w pm3d
376
377 pause -1 "Hit return to continue"
378
379 reset
380
381 print "Plot by pm3d algorithm draws quadrangles filled with color calculated from"
382 print "the z- or color-value of the surrounding 4 corners. The following demo shows"
383 print "different color spots for a plot with very small number of quadrangles (here"
384 print "rectangular pixels). Note that the default option is 'mean'."
385
386 set pm3d map
387 set iso 4
388 set samples 4
389 set xrange [0:3]
390 set yrange [0:3]
391 set cbrange [0:9]
392 f(x,y)=2*x+y
393 set key off
394 unset xtics
395 unset ytics
396 set tics scale 2
397 set colorbox horizontal user origin 0.1,0.025 size .8,0.02
398
399 # Needed by terminals limited on colors:
400 #set palette maxcolors 26
401
402 # Note: no more space in the following multiplot to show demo for
403 #set pm3d corners2color median
404 #set pm3d corners2color geomean
405
406 set multiplot
407 # Let us do multiplot grid 3x3:
408 dx = 1.0/3; dy = 1.0/3;
409 set size dx,dy
410
411 set origin 0*dx,0*dy
412 set title "set pm3d corners2color c1"
413 set pm3d corners2color c1
414 splot f(x,y)
415
416 set origin 2*dx,0*dy
417 set title "set pm3d corners2color c2"
418 set pm3d corners2color c2
419 replot
420
421 set origin 0*dx,2*dy
422 set title "set pm3d corners2color c3"
423 set pm3d corners2color c3
424 replot
425
426 set origin 2*dx,2*dy
427 set title "set pm3d corners2color c4"
428 set pm3d corners2color c4
429 replot
430
431 set origin 0*dx,1*dy
432 set title "set pm3d corners2color mean"
433 set pm3d corners2color mean
434 replot
435
436 set origin 2*dx,1*dy
437 set title "set pm3d corners2color geomean"
438 set pm3d corners2color geomean
439 replot
440
441 set origin 1*dx,0*dy
442 set title "set pm3d corners2color median"
443 set pm3d corners2color median
444 replot
445
446 set origin 1*dx,1*dy
447 set title "Original grid points"
448 unset pm3d
449 set border 0
450 unset xtics
451 unset ytics
452 unset colorbox
453 #splot x*2+y with points ps 3 pt 5 palette
454 splot f(x,y) with linesp ps 3 pt 5 palette
455
456 unset multiplot
457 pause -1 "Hit return to continue"
458 reset
459
460 print "End of pm3d demo."