# Plotting z = f(x,y)

The following code is extracted from program simdem22 in the Simdem package, and it illustrates how easy it is to plot a surface defined as z = f(x,y), where x, y, and z are double precision arrays. The x and y values must be in the form of a rectangular grid.

c
c Define x and y
c
nx = 20
ny = 20
x(1) = - one
x(nx) = one
delta = (x(nx) - x(1))/(dble(nx) - one)
do i = 2, nx - 1
x(i) = x(i - 1) + delta
enddo
y(1) = - one
y(ny) = one
delta = (y(ny) - y(1))/(dble(ny) - one)
do j = 2, ny - 1
y(j) = y(j - 1) + delta
enddo
c
c Define z = f(x,y) and the ranges (xmin,xmax), (ymin,ymax)
c
do j = 1, ny
do i = 1, nx
z(i,j) = x(i)**2 - y(j)**2
enddo
enddo
xmax = x(nx)
xmin = x(1)
ymax = y(ny)
ymin = y(1)
c
c Display the surface, contours, projection, skyscraper blocks, etc.
c
call surd2s (isend, nmax, nx, ny,
+             vector, xmax, xmin, ymax, ymin, z,
+             unused)

The following plot is then displayed, and can be edited to add further features, printed, or archived as a graphics file. The contours can be suppressed, or plotted separately, and there are options to rotate, add labels, arrows, text, graphical objects, etc. In addition, the points defined by z = f(x,y) can be plotted as bars, or cylinders, when error bars can also be added.