Source code for pyrfu.plot.pl_tx
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Built-in imports
from typing import List
# 3rd party imports
import matplotlib.dates as mdates
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.axes import Axes
from xarray.core.dataarray import DataArray
__author__ = "Louis Richard"
__email__ = "louisr@irfu.se"
__copyright__ = "Copyright 2020-2023"
__license__ = "MIT"
__version__ = "2.4.2"
__status__ = "Prototype"
[docs]def pl_tx(
axis: Axes, inp_list: List[DataArray], comp: int = 0, colors: str = "mms", **kwargs
) -> Axes:
r"""Line plot of 4 spacecraft time series.
Parameters
----------
axis : matplotlib.axes._axes.Axes
Axis
inp_list : list of xarray.DataArray
Time series to plot
comp: int, Optional
Index of the column to plot. Default is 0.
colors: {'cluster', 'mms'}, Optional
Color cycle to use. Default uses MMS
Other Parameters
----------------
kwargs : dict
Hash table of plot options.
Returns
-------
axis : matplotlib.axes._axes.Axes
Axis with matplotlib.lines.Line2D.
Raises
------
NotImplementedError: if invalid color style of inp_list.ndim > 3
"""
if axis is None:
_, axis = plt.subplots(1)
if colors.lower() not in ["cluster", "mms"]:
raise NotImplementedError("Unknown color cycle")
for i, inp in enumerate(inp_list):
if inp.ndim == 1:
data = inp.data[:, np.newaxis]
elif inp.ndim == 2:
data = inp.data
elif inp.ndim == 3:
data = np.reshape(
inp.data,
(inp.shape[0], inp.shape[1] * inp.shape[2]),
)
else:
raise NotImplementedError("inp.ndim > 3 not implemented")
time = inp.time
axis.plot(time, data[:, comp], color=f"{colors}:{colors}{i + 1:d}", **kwargs)
locator = mdates.AutoDateLocator(minticks=3, maxticks=7)
formatter = mdates.ConciseDateFormatter(locator)
axis.xaxis.set_major_locator(locator)
axis.xaxis.set_major_formatter(formatter)
axis.grid(True, which="major", linestyle="-", linewidth="0.5", c="0.5")
return axis