chemreac.util.plotting¶
This module collects convenience functions to create matplotlib plots of results.
- chemreac.util.plotting.coloured_spy(A, cmap_name='coolwarm', log=False, symmetric_colorbar=False, **kwargs)[source]¶
Convenience function for using matplotlib to generate a spy plot for inspecting e.g. a jacobian matrix or its LU decomposition.
Parameters: A: 2D array
Array to inspect, populated e.g. by jacobian callback.
cmap_name: string (default: coolwarm)
name of matplotlib colormap to use, kwargs[“cmap”] overrides this.
log: bool or int (default: False)
- if True:
SymLogNorm if np.any(A<0) else LogNorm
- if isinstance(log, int):
SymLogNorm(10**log)
note: “norm” in kwargs overrides this.
symmetric_colorbar: bool or float
to make divergent colormaps pass through zero as intended. if float: max abolute value of colormap (linear)
Returns: Pair (tuple) of axes plotted to (spy, colorbar)
Note
colorbar does not play nicely with SymLogNorm why a custom colorbar axes is drawn.
- chemreac.util.plotting.plot_C_vs_t_and_x(rd, tout, Cout, substance, ax=None, log10=False, **plot_kwargs)[source]¶
Plots 3D surface of concentration as function of time and x for a selected substance.
Parameters: rd: ReactionDiffusion
tout: 1D array of floats
Cout: concentration trajectories from solver
substance: int or string
index or name of substance
ax: Axes instance
log10: bool
Use log logarithmic (base 10) axis
**plot_kwargs:
passed onto plot_surface
Returns: Axes3D instance
- chemreac.util.plotting.plot_C_vs_t_in_bin(rd, tout, Cout, bi=0, ax=None, labels=None, xscale='log', yscale='log', substances=None, ttlfmt='C(t) in bin: {0:.2g} m $\\langle$ x $\\langle$ {1:.2g} m', legend_kwargs=None, ls=None, c=None, xlabel=None, ylabel=None)[source]¶
Plots bin local concentration as function of time for selected substances.
Parameters: rd: ReactionDiffusion
tout: 1D array of floats
Cout: concentration trajectories from solver
bi: bin index
ax: Axes instance
labels: sequence of strings
xscale: matplotlib scale choice (e.g. ‘log’, ‘symlog’)
yscale: matplotlib scale choice (e.g. ‘log’, ‘symlog’)
substances: sequence of indies or names of substances
ttlfmt: string formatted with bin boundaries (set to empty to suppress)
legend_kwargs: dict
kwargs passed to matplotlib legend function, (default: {‘loc’: None, ‘prop’: {‘size’: 11}}), set to False to suppress legend.
ls: sequence of strings
linestyles
c: sequence of strings
colors
Returns: Axes instance
- chemreac.util.plotting.plot_C_vs_x(rd, tout, Cout, substances, ti, ax=None, labels=None, xscale='log', yscale='log', basetitle='C(x)')[source]¶
Plots concentration as function of x for selected substances at time index ‘ti’.
Parameters: rd: ReactionDiffusion
tout: 1D array of floats
Cout: concentration trajectories from solver
substances: sequence of indies or names of substances
ti: int
time index
ax: Axes instance
labels: sequence of strings
xscale: matplotlib scale choice (e.g. ‘log’, ‘symlog’)
yscale: matplotlib scale choice (e.g. ‘log’, ‘symlog’)
basetitle: string
Returns: Axes instance
- chemreac.util.plotting.plot_fields(rd, ax=None, indices=None, rho=None)[source]¶
Convenience function to inspect fields in of ReactionDiffusion instance
Parameters: rd: ReactionDiffusion
ax: Axes instance or dict
if ax is a dict it is used as keyword arguments passed to matplotlib.pyplot.axes (default: None)
indices: sequence of integers
what field strengths sequences to plot
rho: float (optional)
density, with consistent unit. If passed doserate will be plotted instead.
- chemreac.util.plotting.plot_jacobian(rd, tout, yout, substances, **kwargs)[source]¶
Plots time evolution of Jacobian values (useful when investigating numerical instabilities).
Parameters: rd: ReactionDiffusion
system at hand
tout: array_like
output time from integration
yout: array_like
output data from integration (differs from Cout for logy=True)
substances: iterable of int or string
indices or names of substances to plot jacobian values for
- chemreac.util.plotting.plot_per_reaction_contribution(integr, substances, equilibria=None, field_yields=False, **kwargs)[source]¶
Plots contributions to concentration derivatives of selected substances from individual reactions.
Parameters: integr: Integration instance
substances: sequence of Substance instances
equilibria: set of tuples of reaction indices (optional)
When passed only net effect of equilibria reaction will be plotted
field_yields: bool (default: False)
If True contributions from g_values times field will be shown
**kwargs: kwargs passed on to _plot_analysis
Returns: list of matplotlib.axes.Axes instances
- chemreac.util.plotting.plot_solver_linear_error(integration, Cref=0, ax=None, x=None, ti=slice(None, None, None), bi=0, si=0, plot_kwargs=None, fill_between_kwargs=None, scale_err=1.0, fill=True, **kwargs)[source]¶
Parameters: integration: chemreac.integrate.Integration
result from integration.
Cref: array or float
analytic solution to compare with
ax: Axes instance or dict
if ax is a dict it is used as key word arguments passed to matplotlib.pyplot.axes (default: None)
x: array
(optional) x-values, when None it is deduced to be either t or x (when ti or bi are slices repecitvely) (default: None)
ti: slice
time indices
bi: slice
bin indices
si: integer
specie index
plot_kwargs: dict
keyword arguments passed to matplotlib.pyplot.plot (default: None)
fill_between_kwargs: dict
keyword arguments passed to matplotlib.pyplot.fill_between (default: None)
scale_err: float
value with which errors are scaled. (default: 1.0)
fill: bool
whether or not to fill error span
**kwargs
common keyword arguments of plot_kwargs and fill_between_kwargs, e.g. ‘color’, (default: None).
See also
- chemreac.util.plotting.plot_solver_linear_excess_error(integration, Cref, ax=None, x=None, ti=slice(None, None, None), bi=0, si=0, **kwargs)[source]¶
Plots the excess error commited by the intergrator, divided by the span of the tolerances (atol + rtol*|y_i|).
Parameters: integration: chemreac.integrate.Integration
result from integration.
Cref: array or float
analytic solution to compare with
ax: Axes instance or dict
if ax is a dict it is used as **kwargs passed to matplotlib.pyplot.axes (default: None)
x: array
(optional) x-values, when None it is deduced to be either t or x (when ti or bi are slices repecitvely) (default: None)
ti: slice
time indices
bi: slice
bin indices
si: integer
specie index
plot_kwargs: dict
keyword arguments passed to matplotlib.pyplot.plot (default: None)
fill_between_kwargs: dict
keyword arguments passed to matplotlib.pyplot.fill_between (default: None)
scale_err: float
value with which errors are scaled. (default: 1.0)
fill: bool
whether or not to fill error span
**kwargs:
common keyword arguments of plot_kwargs and fill_between_kwargs, e.g. ‘color’, (default: None).
See also
- chemreac.util.plotting.save_and_or_show_plot(show=None, savefig='None')[source]¶
Convenience method for either showing or saving current matplotlib figure.
Parameters: show: bool or None
Show plot, when None only show when savefig is not used default: None
savefig: string
path to output file of figure. If extension is html, mpld3 will be used to generate a d3 backed html output.