control.phase_plane_plot

control.phase_plane_plot(sys, pointdata=None, timedata=None, gridtype=None, gridspec=None, plot_streamlines=True, plot_vectorfield=False, plot_equilpoints=True, plot_separatrices=True, ax=None, suppress_warnings=False, title=None, **kwargs)[source]

Plot phase plane diagram.

This function plots phase plane data, including vector fields, stream lines, equilibrium points, and contour curves.

Parameters
  • sys (NonlinearIOSystem or callable(t, x, ...)) – I/O system or function used to generate phase plane data. If a function is given, the remaining arguments are drawn from the params keyword.

  • pointdata (list or 2D array) – List of the form [xmin, xmax, ymin, ymax] describing the boundaries of the phase plot or an array of shape (N, 2) giving points of at which to plot the vector field.

  • timedata (int or list of int) – Time to simulate each streamline. If a list is given, a different time can be used for each initial condition in pointdata.

  • gridtype (str, optional) – The type of grid to use for generating initial conditions: ‘meshgrid’ (default) generates a mesh of initial conditions within the specified boundaries, ‘boxgrid’ generates initial conditions along the edges of the boundary, ‘circlegrid’ generates a circle of initial conditions around each point in point data.

  • gridspec (list, optional) – If the gridtype is ‘meshgrid’ and ‘boxgrid’, gridspec gives the size of the grid in the x and y axes on which to generate points. If gridtype is ‘circlegrid’, then gridspec is a 2-tuple specifying the radius and number of points around each point in the pointdata array.

  • params (dict, optional) – Parameters to pass to system. For an I/O system, params should be a dict of parameters and values. For a callable, params should be dict with key ‘args’ and value given by a tuple (passed to callable).

  • color (matplotlib color spec, optional) – Plot all elements in the given color (use plot_<fcn>={‘color’: c} to set the color in one element of the phase plot.

  • ax (matplotlib.axes.Axes, optional) – The matplotlib axes to draw the figure on. If not specified and the current figure has a single axes, that axes is used. Otherwise, a new figure is created.

  • dir (str, optional) – Direction to draw streamlines: ‘forward’ to flow forward in time from the reference points, ‘reverse’ to flow backward in time, or ‘both’ to flow both forward and backward. The amount of time to simulate in each direction is given by the timedata argument.

  • plot_streamlines (bool or dict, optional) – If True (default) then plot streamlines based on the pointdata and gridtype. If set to a dict, pass on the key-value pairs in the dict as keywords to streamlines().

  • plot_vectorfield (bool or dict, optional) – If True (default) then plot the vector field based on the pointdata and gridtype. If set to a dict, pass on the key-value pairs in the dict as keywords to vectorfield().

  • plot_equilpoints (bool or dict, optional) – If True (default) then plot equilibrium points based in the phase plot boundary. If set to a dict, pass on the key-value pairs in the dict as keywords to equilpoints().

  • plot_separatrices (bool or dict, optional) – If True (default) then plot separatrices starting from each equilibrium point. If set to a dict, pass on the key-value pairs in the dict as keywords to separatrices().

  • rcParams (dict) – Override the default parameters used for generating plots. Default is set by config.default[‘ctrlplot.rcParams’].

  • suppress_warnings (bool, optional) – If set to True, suppress warning messages in generating trajectories.

  • title (str, optional) – Set the title of the plot. Defaults to plot type and system name(s).

Returns

cplt

Object containing the data that were plotted:

  • cplt.lines: array of list of matplotlib.artist.Artist objects:

    • lines[0] = list of Line2D objects (streamlines, separatrices).

    • lines[1] = Quiver object (vector field arrows).

    • lines[2] = list of Line2D objects (equilibrium points).

  • cplt.axes: 2D array of matplotlib.axes.Axes for the plot.

  • cplt.figure: matplotlib.figure.Figure containing the plot.

See ControlPlot for more detailed information.

Return type

ControlPlot object