From 8edf998c2bcbb79c31c6da4e80520f9a4ed79629 Mon Sep 17 00:00:00 2001 From: Tom Donoghue Date: Mon, 22 Jun 2026 10:50:58 +0100 Subject: [PATCH 1/2] udpate default colors --- specparam/plts/settings.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/specparam/plts/settings.py b/specparam/plts/settings.py index 7e8877a0..0fbf8da6 100644 --- a/specparam/plts/settings.py +++ b/specparam/plts/settings.py @@ -3,6 +3,7 @@ from collections import OrderedDict import numpy as np +from matplotlib.colors import to_hex from specparam.modutils.dependencies import safe_import @@ -14,8 +15,10 @@ # Define list of iterables to check against ITERABLES = (list, tuple, np.ndarray) -# Define list of default plot colors -DEFAULT_COLORS = plt.rcParams['axes.prop_cycle'].by_key()['color'] if plt else None +# Define list of default plot colors, making sure colors are hex, for downstream consistency +# Hex encoding changed in mpl: https://github.com/matplotlib/matplotlib/issues/29915 +DEFAULT_COLORS = [to_hex(col) for col in plt.rcParams['axes.prop_cycle'].by_key()['color']] \ + if plt else None # Define default figure sizes PLT_FIGSIZES = { From 084007237198935e2f4ad3ce3ea4196fedeec760 Mon Sep 17 00:00:00 2001 From: Tom Donoghue Date: Mon, 22 Jun 2026 10:52:54 +0100 Subject: [PATCH 2/2] update to use DEFAULT_COLORS in param plots --- specparam/plts/aperiodic.py | 4 ++-- specparam/plts/periodic.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/specparam/plts/aperiodic.py b/specparam/plts/aperiodic.py index 09679afb..66075e47 100644 --- a/specparam/plts/aperiodic.py +++ b/specparam/plts/aperiodic.py @@ -7,7 +7,7 @@ from specparam.sim.gen import gen_freqs from specparam.modutils.dependencies import safe_import, check_dependency from specparam.modes.modes import check_mode_definition -from specparam.plts.settings import ITERABLES, PLT_FIGSIZES +from specparam.plts.settings import ITERABLES, PLT_FIGSIZES, DEFAULT_COLORS from specparam.plts.templates import plot_yshade from specparam.plts.style import style_param_plot, style_plot from specparam.plts.utils import check_ax, recursive_plot, savefig, check_plot_kwargs @@ -105,7 +105,7 @@ def plot_aperiodic_fits(aps, freq_range, aperiodic_mode, control_offset=False, a if isinstance(aps, list): if not colors: - colors = cycle(plt.rcParams['axes.prop_cycle'].by_key()['color']) + colors = cycle(DEFAULT_COLORS) recursive_plot(aps, plot_function=plot_aperiodic_fits, ax=ax, freq_range=tuple(freq_range), aperiodic_mode=aperiodic_mode, diff --git a/specparam/plts/periodic.py b/specparam/plts/periodic.py index 23b1955f..710e60b4 100644 --- a/specparam/plts/periodic.py +++ b/specparam/plts/periodic.py @@ -7,7 +7,7 @@ from specparam.sim import gen_freqs from specparam.modutils.dependencies import safe_import, check_dependency from specparam.modes.modes import check_mode_definition -from specparam.plts.settings import ITERABLES, PLT_FIGSIZES +from specparam.plts.settings import ITERABLES, PLT_FIGSIZES, DEFAULT_COLORS from specparam.plts.templates import plot_yshade from specparam.plts.style import style_param_plot, style_plot from specparam.plts.utils import check_ax, recursive_plot, savefig, check_plot_kwargs @@ -109,7 +109,7 @@ def plot_peak_fits(peaks, periodic_mode, freq_range=None, average='mean', shade= if isinstance(peaks, list): if not colors: - colors = cycle(plt.rcParams['axes.prop_cycle'].by_key()['color']) + colors = cycle(DEFAULT_COLORS) recursive_plot(peaks, plot_function=plot_peak_fits, ax=ax, periodic_mode=periodic_mode,