set title "3D surface from a grid (matrix) of Z values"
set xrange [-0.5:4.5]
set yrange [-0.5:4.5]

set grid
set hidden3d
$grid << EOD
5 4 3 1 0
2 2 0 0 1
0 0 0 1 0
0 0 0 2 3
0 1 2 4 3
EOD
splot '$grid' matrix with lines notitle

pause -1 "Hit return to continue"
unset hidden3d
undefine $*

set samples 21
set isosample 11
set xlabel "X axis" offset -3,-2
set ylabel "Y axis" offset 3,-2
set zlabel "Z axis" offset -5
set title "3D surface from a function"
set label 1 "This is the surface boundary" at -10,-5,150 center
set arrow 1 from -10,-5,120 to -10,0,0 nohead
set arrow 2 from -10,-5,120 to 10,0,0 nohead
set arrow 3 from -10,-5,120 to 0,10,0 nohead
set arrow 4 from -10,-5,120 to 0,-10,0 nohead
set xrange [-10:10]
set yrange [-10:10]
splot x*y
pause -1 "Hit return to continue (1)"
unset arrow
unset label
set grid
splot x**2+y**2, x**2-y**2
pause -1 "Hit return to continue (2)"
splot x**2+y**2, x**2-y**2, x*y
pause -1 "Hit return to continue (3)"
splot x**2+y**2, x**2-y**2, x*y, (x**3+y**3)/10
pause -1 "Hit return to continue (4)"
set ticslevel 0.0
set title "3D gnuplot demo ( ticslevel = 0.0 )"
rep
pause -1 "Hit return to continue (5)"
set ticslevel 2.0
set title "3D gnuplot demo ( ticslevel = 2.0 )"
rep
pause -1 "Hit return to continue (6)"
set ticslevel 0.5
set title "3D gnuplot demo ( ticslevel = 0.5 )"
rep
pause -1 "Hit return to continue (7)"
set title "3D gnuplot demo"
unset grid
splot x*y with points
pause -1 "Hit return to continue (8)"
unset xtics
unset ytics
set xrange [-1:1]
set yrange [-1:1]
set title "Surfaces with no grid or tics"
splot x*y with lines, x**2*y**3 with dots, x**3*y*2 with points
pause -1 "Hit return to continue (9)"
set xtics ("low" -3, "mid" 0, "high" 3)
set ytics -2,0.5,2
set xrange [-3:3]
set yrange [-3:3]
set log z
set title "Surfaces with z log scale"
splot x**2*y**2 + 2, x**2*y**4 + 2, x**4*y**2 + 2
pause -1 "Hit return to continue (10)"
unset log z
set xtics autofreq
set ytics autofreq
set xrange [-1:1]
set yrange [-1:1]
set samples 51
set isosample 21
set dummy u,v
set title "3D gnuplot demo"
splot u*v / (u**2 + v**2 + 0.1)
pause -1 "Hit return to continue (11)"
splot [x=-3:3] [y=-3:3] sin(x) * cos(y)
pause -1 "Hit return to continue (12)"
set zrange [-1.0:1.0]
replot
pause -1 "Hit return to continue (13)"
set title "Sinc function"
set zrange [-1:1]
set label 1 "This is equal to 1" at 0,3.2,1 left
set arrow 1 from 0,3,1 to 0,0,1
sinc(u,v) = sin(sqrt(u**2+v**2)) / sqrt(u**2+v**2)
splot [-5:5.01] [-5:5.01] sinc(u,v)
pause -1 "Hit return to continue (14)"
set view 70,20,1
set zrange [-0.5:1.0]
set ztics -1,0.25,1
set label 1 "This is equal to 1" at -5,-2,1.5 centre
set arrow 1 from -5,-2.1,1.4 to 0,0,1
splot [-12:12.01] [-12:12.01] sinc(u,v)
pause -1 "Hit return to continue (15)"
set title "fence plot constructed with separate parametric surfaces"
# A method suggested by Hans-Bernhard Broeker
# <broeker@physik.rwth-aachen.de>: display a separate parametric
# surface for each fence.
set zrange [-1:1]
unset label
unset arrow
set xrange [-5:5]; set yrange [-5:5]
set arrow from 5,-5,-1.2 to 5,5,-1.2 lt -1
set label 1 "increasing v" at 6,0,-1
set arrow from 5,6,-1 to 5,5,-1 lt -1
set label 2 "u=0" at 5,6.5,-1
set arrow from 5,6,sinc(5,5) to 5,5,sinc(5,5) lt -1
set label 3 "u=1" at 5,6.5,sinc(5,5)
set parametric
set hidden3d offset 0	# front/back coloring makes no sense for fenceplot #
set isosamples 2,33
xx=-5; dx=(4.99-(-4.99))/9
x0=xx; xx=xx+dx
x1=xx; xx=xx+dx
x2=xx; xx=xx+dx
x3=xx; xx=xx+dx
x4=xx; xx=xx+dx
x5=xx; xx=xx+dx
x6=xx; xx=xx+dx
x7=xx; xx=xx+dx
x8=xx; xx=xx+dx
x9=xx; xx=xx+dx
splot [u=0:1][v=-4.99:4.99] \
	x0, v, (u<0.5) ? -1 : sinc(x0,v) notitle, \
	x1, v, (u<0.5) ? -1 : sinc(x1,v) notitle, \
	x2, v, (u<0.5) ? -1 : sinc(x2,v) notitle, \
	x3, v, (u<0.5) ? -1 : sinc(x3,v) notitle, \
	x4, v, (u<0.5) ? -1 : sinc(x4,v) notitle, \
	x5, v, (u<0.5) ? -1 : sinc(x5,v) notitle, \
	x6, v, (u<0.5) ? -1 : sinc(x6,v) notitle, \
	x7, v, (u<0.5) ? -1 : sinc(x7,v) notitle, \
	x8, v, (u<0.5) ? -1 : sinc(x8,v) notitle, \
	x9, v, (u<0.5) ? -1 : sinc(x9,v) notitle
pause -1 "Hit return to continue (16)"
set title "\"fence plot\" using single parametric surface with undefined points"
# Another method suggested by Hans-Bernhard Broeker
# <broeker@physik.rwth-aachen.de>: Use parametric variable u to control
# x, y, and z.  u=3*fencenumber+remainder, where the remainder selects
# one of three types of points:
# 	  remainder=0: x=xmin+fencenumber*dx, y=v, z=zbase
# 	  remainder=1: x=xmin+fencenumber*dx, y=v, z=f(x,y)
# 	  remainder=2: x=xmin+fencenumber*dx, y=v, z=1/0 (undefined)
set parametric
unset label
unset arrow
xmin=-4.99; xmax=5; n=10; dx=(xmax-xmin)/(n-1.)
set isosamples 3*n,33
zbase=-1
set arrow from 5,-5,-1.2 to 5,5,-1.2 lt -1
set label 1 "increasing v" at 6,0,-1
set arrow from -5,-5,-1.2 to 5,-5,-1.2 lt -1
set label 2 "increasing u" at 0,-5,-1.5
set arrow from 5,6,-1 to 5,5,-1 lt -1
set label 3 "floor(u)%3=0" at 5,6.5,-1
set arrow from 5,6,sinc(5,5) to 5,5,sinc(5,5) lt -1
set label 4 "floor(u)%3=1" at 5,6.5,sinc(5,5)
splot [u=.5:3*n-.5][v=-4.99:4.99] \
	 xmin+floor(u/3)*dx, v, ((floor(u)%3)==0) ? zbase : \
			 (((floor(u)%3)==1) ? sinc(xmin+u/3.*dx,v) : 1/0) lt 3 notitle
pause -1 "Hit return to continue (17)"
unset hidden3d; unset parametric; set isosamples 20,20
set xrange [-1:1]; set yrange [-1:1]
set ztics autofreq
unset arrow
unset label
set log
set auto
set title "This has logarithmic scale"
splot [x=1:15] [y=1:15] x**2+y**2
pause -1 "Hit return to continue (18)"
unset log
set xrange [0:15]
set yrange [0:15]
set auto
#set zrange [-0.6:0.7]
set ticslevel 0
set style data lines
set title "Data grid plotting"
set parametric
splot "glass.dat"
pause -1 "Hit return to continue (19)"
splot "glass.dat" using 3:2:1
pause -1 "Hit return to continue (20)"
set zrange [-1.2:1.2]
set ticslevel 0.5
unset parametric
set xlabel "line index within group"
set ylabel "group index"
splot "glass.dat" using 1, "glass.dat" using 2, "glass.dat" using 3
pause -1 "Hit return to continue (21)"
set title "splot of part of a data file"
set xlabel "X axis" offset -3,-2
set ylabel "Y axis" offset 3,-2
set hidden3d
splot 'glass.dat' every 2::0::12 with lines
pause -1 "Hit return to continue (22)"
set title "splot with \"set pm3d\" (implemented with some terminals)"
set pm3d
set hidden3d
splot 'glass.dat' every 2::0::12 with lines
pause -1 "Hit return to continue (23)"
unset hidden3d
unset pm3d
set param
set title "Test of spherical coordinates"
set mapping spherical
splot "glass.dat"
pause -1 "Hit return to continue (24)"

# mandelbrot demo
set title "Mandelbrot function"
unset parametric
set mapping cartesian
set view 60,30,1,1
set auto
set isosamples 60
set hidden3d
compl(a,b)=a*{1,0}+b*{0,1}
mand(z,a,n) = n<=0 || abs(z)>100 ? 1:mand(z*z+a,a,n-1)+1
splot [-2:1][-1.5:1.5] mand({0,0},compl(x,y),30)     
pause -1 "Hit return to continue (25)"
reset
