# How to generate a phase plane plot from data points?

I have a list of points

Rabbits={{0,20},{0.01,20.0024},{0.02,20.0071}...}

Foxes={{0,40},{0.01,39.76},{0.02,39.5214}...}


I want to create a phase plane with these points. I've tried using ParametricPlot,

ParametricPlot[{Rabbits, Foxes}, {t, 0, 100}]


But Mathematica keep running. What am I doing wrong?

• You should share your complete data.
– zhk
Feb 19, 2017 at 16:43

ListStreamPlot

Are you looking for something like this?

data = Table[{{x, y}, {y, x - x^2}}, {x, -1.5, 1.5, 0.2}, {y, -2, 2, 0.2}];
ListStreamPlot[data]


Edit

ParametricPlot

Since you haven't provided a complete data. So, I will generate my own while taking data from a predator-prey model, to make my response more relevant to the question.

sol = With[{r = 0.5}, NDSolve[{U'[t] == r*(U[t] - U[t]*V[t]),
V'[t] == 1/r*(U[t]*V[t] - V[t]), U[0] == 1.1, V[0] == 1}, {U,
V}, {t, 0, 20}]];


You can think of U to be rabbits density and V foxes density.

rabbitsdata = Table[Flatten@Evaluate[{t, U[t]} /. sol], {t, 0, 20, 0.1}];
foxesdata = Table[Flatten@Evaluate[{t, V[t]} /. sol], {t, 0, 20, 0.1}];


The structure of the above data is like the one you provided, i.e, {{time, Rabbitdensity},....}.

Now, I will interpolate the above data to generate two interpolating functions,

{U, V} = ListInterpolation[#, {{0, 20}}] & /@ {rabbitsdata[[All, 2]], foxesdata[[All, 2]]};


Finally, plotting the phase-portrait using ParametricPlot,

ParametricPlot[{U[t], V[t]}, {t, 0, 20}, Frame -> True]


• Yes, this is perfect!! Feb 19, 2017 at 16:48
• @Deborah_Watson For more details about this, you should search ListStreamPlot.
– zhk
Feb 19, 2017 at 16:49

Parametric plot is used to plot parametric functions. In your case you should use ListPlot instead.

For this first you need list of two tuples like {{20,40},{20.0024,39.76}....}. This can be achieved as follows:

Transpose[{Transpose[Rabbits[[2, All]]], Transpose[Foxes[[2, All]]]}]


Once you are done, you can use ListPlot to get desired output:

ListPlot[Transpose[{Transpose[Rabbits[[2, All]]], Transpose[Foxes[[2, All]]]}], PlotRange->All]

• This is just the thing I wanted, thank you soo much. I can't believe how simple that was!!! Feb 20, 2017 at 20:25