Source code for radiospectra.spectrum

import numpy as np

__all__ = ["Spectrum"]


[docs] class Spectrum(np.ndarray): """ Class representing a 1 dimensional spectrum. Attributes ---------- freq_axis : `~numpy.ndarray` One-dimensional array with the frequency values. data : `~numpy.ndarray` One-dimensional array which the intensity at a particular frequency at every data-point. Examples -------- >>> from radiospectra.spectrum import Spectrum >>> import numpy as np >>> data = np.linspace(1, 100, 100) >>> freq_axis = np.linspace(0, 10, 100) >>> spec = Spectrum(data, freq_axis) >>> spec.peek() # doctest: +SKIP """ def __new__(cls, data, *args, **kwargs): return np.asarray(data).view(cls) def __init__(self, data, freq_axis): if np.shape(data)[0] != np.shape(freq_axis)[0]: raise ValueError("Dimensions of data and frequency axis do not match") self.freq_axis = freq_axis
[docs] def plot(self, axes=None, **matplot_args): """ Plot spectrum onto current axes. Parameters ---------- axes : `~matplotlib.axes.Axes` or `None` If provided the spectrum will be plotted on the given axes. Else the current `matplotlib` axes will be used. **matplot_args : dict Any additional plot arguments that should be used when plotting. Returns ------- `~matplotlib.axes.Axes` The plot axes. """ from matplotlib import pyplot as plt # Get current axes if not axes: axes = plt.gca() params = {} params.update(matplot_args) lines = axes.plot(self.freq_axis, self, **params) return lines
[docs] def peek(self, **matplot_args): """ Plot spectrum onto a new figure. Parameters ---------- **matplot_args : dict Any additional plot arguments that should be used when plotting. Returns ------- `~matplotlib.Figure` A plot figure. Examples -------- >>> from radiospectra.spectrum import Spectrum >>> import numpy as np >>> spec = Spectrum(np.linspace(1, 100, 100), np.linspace(0, 10, 100)) >>> spec.peek() # doctest: +SKIP """ from matplotlib import pyplot as plt figure = plt.figure() self.plot(**matplot_args) figure.show() return figure