# Gnuplotting

Create scientific plots using gnuplot

June 4th, 2010 | 6 Comments

If one have a coordinate system with n-dimension, then one of the dimensions can be expressed by the n-1 other dimensions, e.g. z = f(x,y).
But if you want to plot functions that are defined in polar coordinates, e.g. a sphere, they are complicated to define with z = f(x,y). But Gnuplot offers you a way to handle this type of functions by using its parametric mode. In parametric mode the functions are expressed in angular coordinates t or u,v dependend on the dimensions of your plot.

## 2D case

In the 2D case we have only one free dimension:

```y = f(x)   =>   x = fx(t), y = fy(t)
```

In Fig. 1 we see the connections between the angular coordinate `t` and radius `r` and `x,y` that is given by

```x = r cos(t)
y = r cos(π/2-t) = r sin(t)
```

Using the result from above it is very easy to plot a circle:

```set parametric
set trange [0:2*pi]
# Parametric functions for a circle
fx(t) = r*cos(t)
fy(t) = r*sin(t)
plot fx(t),fy(t)
```

## 3D case

In three dimensions we have the case:

```z = f(x,y)   =>   x = fx(u,v), y = fy(u,v), z = fz(u,v)
```

In Fig. 3 we see the connection between the two angular variables `u` (that is `t` in the 2D case), `v` and the radius `r`:

```x = r cos(v) cos(u)
y = r cos(v) sin(u)
z = r sin(u)
```

Using the parametric variables `u,v` it is very easy to draw a sphere or a piece of a sphere:

```set parametric
set urange [0:3.0/2*pi]
set vrange [-pi/2:pi/2]
# Parametric functions for the sphere
fx(v,u) = r*cos(v)*cos(u)
fy(v,u) = r*cos(v)*sin(u)
fz(v)   = r*sin(v)
splot fx(v,u),fy(v,u),fz(v)
```

The result is shown in Fig. 4. Note that we have to use 3.0/2, because 3/2 is 1 for Gnuplot!