IPython Notebook / Matplotlib / Pylab / Numpy is great for graphing (among other things). Below is a simple demo of how to graph with it.

To run IPython Notebook, use this command: `ipython notebook --pylab inline`

Here's a screenshot:

Here's an embedded IPython Notebook showing a slightly easier way:

In [5]:

```
x = linspace(0, 2*pi, 42)
f1 = 5 * sin(x)
f2 = 2 * sin(2*x)
f3 = 1 * sin(3*x)
plot(x, f1)
plot(x, f2, 'ro')
plot(x, f3, 'g--')
show()
```

Note: using the `--pylab`

argument makes python automatically import a number of modeules, so that I can do things like just writing `pi`

instead of `math.pi`

. Also, `sin()`

is the `scipy.sin()`

function, which can take a numpy array as an argument, so that I don't have to do a `map()`

or list comprehension to apply the function to each item in `x`

.