Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions changelog/188.feature.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
Add a ``peek()`` method to ``GenericSpectrogram``, which gives it a quick-look plotting functionality
similar to ``sunpy.map.Map.peek()`` and ``radiospectra.spectrum.Spectrum.peek()``.
38 changes: 38 additions & 0 deletions docs/code_ref/spectrogram.rst
Original file line number Diff line number Diff line change
@@ -1,4 +1,42 @@
`radiospectra.spectrogram`
==========================

The `radiospectra.spectrogram` module provides classes and utilities for working with dynamic solar radio spectrograms.

Visualizing Spectrograms
------------------------

All spectrogram objects in ``radiospectra`` inherit from :class:`~radiospectra.spectrogram.GenericSpectrogram`, which provides a :meth:`~radiospectra.spectrogram.GenericSpectrogram.peek` method for quick-look visualization.

The ``peek()`` method creates a new figure and plots the spectrogram with sensible defaults, including an optional colorbar.

.. plot::
:include-source:

import numpy as np
import astropy.units as u
from astropy.time import Time
from radiospectra.spectrogram import GenericSpectrogram

# Create artificial spectrogram data
times = Time("2021-01-01T00:00:00") + np.arange(100) * u.min
freqs = np.linspace(10, 100, 50) * u.MHz
data = np.random.rand(50, 100)

# Define minimal metadata
meta = {
"observatory": "Example Data",
"instrument": "Mock Instrument",
"detector": "Mock Detector",
"start_time": times[0],
"end_time": times[-1],
"wavelength": u.Quantity([1, 10], unit=u.m),
"times": times,
"freqs": freqs,
}

# Instantiate and peek
spec = GenericSpectrogram(data, meta)
spec.peek()

.. automodapi:: radiospectra.spectrogram
22 changes: 22 additions & 0 deletions radiospectra/spectrogram/spectrogrambase.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
from sunpy.visualization import peek_show

from radiospectra.exceptions import SpectraMetaValidationError
from radiospectra.mixins import NonUniformImagePlotMixin, PcolormeshPlotMixin

Expand Down Expand Up @@ -107,3 +109,23 @@ def __repr__(self):
f" {self.wavelength.min} - {self.wavelength.max},"
f" {self.start_time.isot} to {self.end_time.isot}>"
)

@peek_show
def peek(self, show_colorbar=True, **kwargs):
"""
Displays a quick-look plot of the Spectrogram.

Parameters
----------
show_colorbar : `bool`, optional
Whether to show a colorbar. Defaults to `True`.
**kwargs : `dict`
Any additional keyword arguments are passed to `~radiospectra.spectrogram.GenericSpectrogram.plot`.
"""
import matplotlib.pyplot as plt

figure = plt.figure()
axes = figure.add_subplot()
ret = self.plot(axes=axes, **kwargs)
if show_colorbar:
figure.colorbar(ret)
Loading