Given a non-constant morphism of Riemann surfaces $f:X\to Y$, a critical point of $f$ is a point $x\in X$ such that equivalently :
$\bullet$ For every neighbourhood $x\in U\subset X$ the restriction $f|U:U\to Y$ is not injective.
$\bullet$ The differential $df(x)=0$
$\bullet$ In local cooordinates at $x$ and $f(x)$, $f$ can be written as $z\mapsto z^n $ with $n\geq 2$
The critical values of $f$ are the $y\in Y$ which can be written $y=f(x)$ for some critical $x\in X$.
The terminology "branchpoint" is unfortunately ambiguous: some authors (e.g. Griffiths and Forster) use it for critical point and others (e.g. Miranda) for critical values.
For example, given distinct $a_1, a_2,...,a_n\in \mathbb C$, if you consider the Riemann surface $X$ of the "function"$\sqrt {(z-a_1)(z-a_2)...(z-a_n)}$, you will obtain a morphism $f:X\to \mathbb P^1(\mathbb C)$
whose critical values in $\mathbb C$ are $a_1,a_2,..., a_n$ .
Moreover $\infty\in \mathbb P^1(\mathbb C) $ will also be a critical value precisely when $n$ is odd.
In this simple but basic example each critical value has exactly one critical point mapping to it.
Although the above might look a bit abstract, be very wary of the "concrete" approach of this kind of problems by cut and paste techniques with pictures of sheets crossing themselves.
It has elicited some very harsh words from Serge Lang (for example) in his book here , Chapter XI, ยง1: "It should be emphasised that the picture is totally and irretrievably misleading".
I recommend Forster's Riemann Surfaces for a completely rigorous and definitive treatment.
Firstly, the collection of points $x+iy$ gives you a single plane. It has in it the real axis and the imaginary axis, but it's just one plane.
The graph of a function $f:\mathbb C \to \mathbb C$ is a four dimensional object (since $\mathbb C$ is a two-dimensional object). So, if you are having trouble visualizing the graph it ok - it's just because most people are not very good at visualizing in four dimensions.
As you say, every function $f:\mathbb C \to \mathbb C$ gives rise to two real valued functions $u,v:\mathbb C \to \mathbb R$. The graph of each of these is a three dimensional object that can be plotted. The two graphs together determine the given function $f$ but the the visual information given by the geometry of these component real-valued functions' graphs is quite limited if you want for the study of $f$ as an analytic function. I hope this helps clearing some of the confusion.
Best Answer
Most programs that support Matlab-style or NumPy-style array operations and plotting can do that. Examples are Octave, FreeMat, or Scilab. The essence (in Octave syntax), demonstrated for the $\tanh$ function, is:
But then the segments between the grid points will be straight. You may want a little more refinement. Run the following as a script file or enter its contents in the Octave UI: