Skip to content

Commit f41b2b5

Browse files
committed
add freq_range option to plot_spectra
1 parent 94fa407 commit f41b2b5

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

fooof/plts/spectra.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
@savefig
2525
@style_plot
2626
@check_dependency(plt, 'matplotlib')
27-
def plot_spectra(freqs, power_spectra, log_freqs=False, log_powers=False,
27+
def plot_spectra(freqs, power_spectra, log_freqs=False, log_powers=False, freq_range=None,
2828
colors=None, labels=None, ax=None, **plot_kwargs):
2929
"""Plot one or multiple power spectra.
3030
@@ -38,6 +38,9 @@ def plot_spectra(freqs, power_spectra, log_freqs=False, log_powers=False,
3838
Whether to plot the frequency axis in log spacing.
3939
log_powers : bool, optional, default: False
4040
Whether to plot the power axis in log spacing.
41+
freq_range : list of [float, float], optional
42+
Frequency range to plot.
43+
Should be provided in linear space, regardless of value of `log_freqs`.
4144
colors : list of str, optional, default: None
4245
Line colors of the spectra.
4346
labels : list of str, optional, default: None
@@ -53,6 +56,10 @@ def plot_spectra(freqs, power_spectra, log_freqs=False, log_powers=False,
5356
# Create the plot
5457
plot_kwargs = check_plot_kwargs(plot_kwargs, {'linewidth' : 2.0})
5558

59+
# Check for frequency range input, and log if x-axis is in log space
60+
if freq_range is not None:
61+
freq_range = np.log10(freq_range) if log_freqs else freq_range
62+
5663
# Make inputs iterable if need to be passed multiple times to plot each spectrum
5764
plt_powers = np.reshape(power_spectra, (1, -1)) if np.ndim(power_spectra) == 1 else \
5865
power_spectra
@@ -63,7 +70,7 @@ def plot_spectra(freqs, power_spectra, log_freqs=False, log_powers=False,
6370
labels = repeat(labels) if not isinstance(labels, list) else cycle(labels)
6471
colors = repeat(colors) if not isinstance(colors, list) else cycle(colors)
6572

66-
# Plot
73+
# Plot power spectra, looping across all spectra to plot
6774
for freqs, powers, color, label in zip(plt_freqs, plt_powers, colors, labels):
6875

6976
# Set plot data, logging if requested, and collect color, if absent
@@ -74,6 +81,8 @@ def plot_spectra(freqs, power_spectra, log_freqs=False, log_powers=False,
7481

7582
ax.plot(freqs, powers, label=label, **plot_kwargs)
7683

84+
ax.set_xlim(freq_range)
85+
7786
style_spectrum_plot(ax, log_freqs, log_powers)
7887

7988

0 commit comments

Comments
 (0)