21 Phase portraits

A Graphical analysis

In analysing a model we would often like to visualise the dynamics of a system. Most commonly we might do this by plotting the time-courses of our variables, showing how the density of our populations change over time. If we have two populations – as we regularly do in this course – we’d therefore be plotting two curves together, which can make such plots a bit messy, certainly if we want to look at different initial conditions. An alternative is to sketch a phase portrait. In this plot we leave time implicit, and instead plot how the two densities change together.

Suppose we have two populations with densities [latex]X[/latex] and [latex]Y[/latex] for which we have ordinary differential equations describing their dynamics. We can imagine a plot that takes [latex]X[/latex] and [latex]Y[/latex] as the two axes. We could then mark on the two densities at their initial values, [latex]X(0)[/latex] and [latex]Y(0)[/latex] as a single point on the plot. We might then go forward in time a little and mark on a second point. We can then continue moving forward in time and adding on points, then ‘join the dots’ to form a trajectory, showing how the two densities change over time.

This approach assumes we know the actual densities at various time-points, but as we have seen, for most non-linear models we do not have that luxury without using numerical solvers in a programming package. However, we can get an idea of the qualitative behaviour by sketching certain details onto a phase portrait.


The basic algorithm for construcing a phase portrait is as follows:

  1. Draw axes of the two variables.
    We can only really sketch the phase portrait for two-dimensional systems. Usually we’d have the variable for our first ODE on the horizontal axis and the second on the vertical axis, but sometimes it makes sense to go the other way around (particularly if the nullclines are awkward for one of the two ODEs – see step 3).
  2. Determine how much of the phase plane is biologically feasible.
    An advantage of mathematical biology models is that we rarely need to worry about negative densities, so we can usually just draw the upper-right quadrant of the plane. Sometimes we can reduce it even more – see the SIR models in chapters 4 and 5 for examples
  3. Calculate nullclines and draw them on your plot.
    Nullclines are curves on your plot along which one of the ODEs is equal to zero. In turn, set each ODE to zero and (assuming you placed [latex]X[/latex] on your horizontal axis) re-arrange it into the form [latex]Y=f(X)[/latex]. This will hopefully give you a curve you can sketch, though may occasionally look unpleasant. Because the ODE is zero along this line, trajectories must cross these nullclines either vertically or horizontally depending on which ODE it came from – again assuming [latex]X[/latex] is on the horizontal axis, the nullcline that gives[latex]dX/dt=0[/latex] must be crossed vertically, since the densities should not be changing in the [latex]X[/latex] direction.
  4. Mark on equilibria where two (different) nullclines cross.
    Remember that each nullcline is where one of the ODEs is zero. Therefore, where they intersect it must be that both of the ODEs are zero, and that is the definition of an equilibrium. Mark these points clearly.
  5. Work out the qualitative directions of travel in each of the regions separated by the nullclines and draw arrows on your phase portrait to show these direction fields.
    This is often the most challenging part. The nullclines divide the plot up into regions where each ODE is either positive or negative. We don’t especially mind about their actual values, just what the sign is. In each region, look at the ODEs and try and infer whether each ODE is positive or negative. You could do this by choosing helpful values to plug in (“what if [latex]X[/latex] and [latex]Y[/latex] are both really small?”) or by thinking about the nullcline equations. Then draw on horizontal/vertical arrows in each region corresponding to this sign. For example, if [latex]X[/latex] is on the horizontal axis, then [latex]dX/dt>0[/latex] means [latex]X[/latex] is increasing, so trajectories move to the right.
  6. Optionally use linear stability analysis to get a clearer picture of behaviour around the equilibria.
    If we want more detail, we can apply linear stability analysis to work out whether each equilibrium is stable or unstable, or a node or a cycle, etc. I generally do not worry too much about this step unless I am really unsure how to draw on the trajectories.
  7. Sketch on some sample trajectories.
    Using all of the rules you have just found, sketch on a couple of trajectories. Choose some starting point, then look at what direction you must be travelling in from your direction fields. Draw your curve in that direction until you come to a nullcline. Make sure you cross the nullcline in the correct horizontal or vertical direction, then look at what the direction is in your new region of the phase portrait and continue your line. Most of the time you will end up moving towards an equilibrium point, where if you have used step 6 you will have more detail of how to finish the trajectory, though often it will be obvious from the way the nullclines and direction fields are arranged.


If you follow these steps, you should be able to construct any of the phase portraits needed in this course and beyond.


Icon for the Creative Commons Attribution 4.0 International License

Introducing Mathematical Biology Copyright © 2023 by Alex Best is licensed under a Creative Commons Attribution 4.0 International License, except where otherwise noted.

Share This Book