Source code for specparam.plts.error

"""Plots for visualizing model error."""

import numpy as np

from specparam.core.modutils import safe_import, check_dependency
from specparam.plts.spectra import plot_spectra
from specparam.plts.settings import PLT_FIGSIZES
from specparam.plts.style import style_spectrum_plot, style_plot
from specparam.plts.utils import check_ax, savefig

plt = safe_import('.pyplot', 'matplotlib')

###################################################################################################
###################################################################################################

[docs]@savefig @style_plot @check_dependency(plt, 'matplotlib') def plot_spectral_error(freqs, error, shade=None, log_freqs=False, ax=None, **plot_kwargs): """Plot frequency by frequency error values. Parameters ---------- freqs : 1d array Frequency values, to be plotted on the x-axis. error : 1d array Calculated error values or mean error values across frequencies, to plot on the y-axis. shade : 1d array, optional Values to shade in around the plotted error. This could be, for example, the standard deviation of the errors. log_freqs : bool, optional, default: False Whether to plot the frequency axis in log spacing. ax : matplotlib.Axes, optional Figure axes upon which to plot. **plot_kwargs Additional plot related keyword arguments, with styling options managed by ``style_plot``. """ ax = check_ax(ax, plot_kwargs.pop('figsize', PLT_FIGSIZES['spectral'])) plt_freqs = np.log10(freqs) if log_freqs else freqs plot_spectra(plt_freqs, error, ax=ax, linewidth=3) if np.any(shade): ax.fill_between(plt_freqs, error-shade, error+shade, alpha=0.25) ymin, ymax = ax.get_ylim() if ymin < 0: ax.set_ylim([0, ymax]) ax.set_xlim(plt_freqs.min(), plt_freqs.max()) style_spectrum_plot(ax, log_freqs, True) ax.set_ylabel('Absolute Error')