egttools.plotting.plot_replicator_dynamics_in_simplex

plot_replicator_dynamics_in_simplex(payoff_matrix=None, game=None, group_size=2, nb_points_simplex=100, nb_of_initial_points_for_root_search=10, atol=1e-07, atol_equal=1e-12, method_find_roots='hybr', atol_stability_pos=0.0001, atol_stability_neg=0.0001, atol_stability_zero=0.0001, figsize=(10, 8), ax=None, stability_mode='int')[source]

Plot the replicator dynamics on a 2D simplex for 2- or N-player matrix games.

Parameters:
  • payoff_matrix (Optional[NDArray[np.float64]], default=None) – The payoff matrix of the game (used if game is not provided).

  • game (Optional[AbstractGame], default=None) – A game object from which the payoff matrix can be retrieved via .payoffs().

  • group_size (int) – Group size. Use 2 for pairwise interactions.

  • nb_points_simplex (int) – Sampling resolution for vector field.

  • nb_of_initial_points_for_root_search (int) – Number of starting points for root search.

  • atol (float) – Tolerance for edge drift detection.

  • atol_equal (float) – Tolerance for root comparison and filtering.

  • method_find_roots (str) – Root-finding algorithm (e.g. ‘hybr’).

  • atol_stability_pos (float) – Threshold for instability detection (positive eigenvalues).

  • atol_stability_neg (float) – Threshold for stability detection (negative eigenvalues).

  • atol_stability_zero (float) – Threshold for zero eigenvalues.

  • figsize (Tuple[int, int]) – Figure size.

  • ax (Optional[plt.Axes]) – Optional existing axis.

  • stability_mode ({'bool', 'int'}, default='int') – Whether to return stability as booleans or integers: - ‘bool’: True for stable, False otherwise - ‘int’: 1 (stable), 0 (saddle), -1 (unstable)

Returns:

Simplex plot object, replicator function, roots in barycentric and cartesian, and root stability indicators.

Return type:

Tuple[Simplex2D, Callable, List[NDArray], List[NDArray], List[int] or List[bool]]

Notes

The returned gradient function is wrapped to include a dummy t parameter, enabling direct use with ODE solvers such as scipy.integrate.odeint. It can also be passed to egttools.plotting.Simplex2D to draw trajectories over the simplex.