Drawing parametric surfaces
gnuplot allows us to define surfaces parametrically, which allows us to plot complex and possibly self-intersecting shapes.

The previous figure shows a surface that slices through itself in 3D.
How to do it…
Following is the script for the previous figure:
set param set iso 50 set ztics .5 set xtics .4 set ytics .4 set urange [-pi:pi] set vrange [-pi:pi] set hidd splot cos(u)*cos(v), sin(u)*cos(v), sin(u)
How it works…
As in the previous recipe, we provide the x, y, and z components, but the provision of components that depend on both parameters (u and v) defines a surface rather than merely a path through the 3D space.
There's more…
The same thing can be done with colored surfaces.

The previous figure is of the same function that we plotted in the one prior to it, rendered as a color-coded surface rather than a wireframe. Note that although the axes are visible through the surface, the surface is hidden by itself. Following is the script that produced the previous figure...