Source code for pyrfu.plot.plot_clines

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import matplotlib.pyplot as plt

# 3rd party import
import numpy as np
from matplotlib.cm import get_cmap
from matplotlib.colorbar import ColorbarBase
from matplotlib.colors import LogNorm

# Local imports
from .plot_line import plot_line

__author__ = "Louis Richard"
__email__ = "louisr@irfu.se"
__copyright__ = "Copyright 2020-2023"
__license__ = "MIT"
__version__ = "2.4.2"
__status__ = "Prototype"


[docs]def plot_clines(axis, inp, yscale="log", cscale="log", cmap="jet", **kwargs): r"""Plot lines with color associated to the level. Parameters ---------- axis : Axes inp : xarray.DataArray Time series as an energy spectrum to plot. yscale : str, Optional Scale of the yaxis. Default is "log" cscale : str, Optional Scale of the colormap. Default is "log". cmap : str, Optional Colormap. Default is "jet" kwargs : dict Plot options. Returns ------- axis : Updated axis cbl : Colorbar associated Other Parameters ---------------- See pyrfu.plot.plot_line """ pad = 0.01 c_map = get_cmap(name=cmap) for i, c in enumerate(c_map(np.linspace(0, 1, len(inp.energy.data)))): plot_line(axis, inp[:, i], color=c, **kwargs) pos = axis.get_position() f = plt.gcf() cax = f.add_axes([pos.x0 + pos.width + pad, pos.y0, pad, pos.height]) if cscale == "log": norm = LogNorm(vmin=inp.energy.data[0], vmax=inp.energy.data[-1]) else: raise NotImplementedError ColorbarBase(cax, cmap=c_map, norm=norm, orientation="vertical") if yscale == "log": axis.set_yscale("log") cax.set_axisbelow(False) return axis, cax