Source code for solarwindpy.plotting.labels

#!/usr/bin/env python
r"""Tools for creating physical quantity plot labels."""
__all__ = [
    "TeXlabel",
    "Vsw",
    "Count",
    "base",
    "special",
    "available_TeXlabel_measurements",
    "species_translation",
]

from inspect import isclass
import pandas as pd

from . import base
from . import special
from . import composition
from . import elemental_abundance
from . import datetime  # noqa: F401
from . import chemistry  # noqa: F401

TeXlabel = base.TeXlabel
species_translation = base._run_species_substitution
Vsw = special.Vsw
Count = special.Count
Ion = composition.Ion
ChargeStateRatio = composition.ChargeStateRatio
ElementalAbundance = elemental_abundance.ElementalAbundance


def _clean_str_list_for_printing(data):
    """Format a list of strings as grouped, sorted text.

    Parameters
    ----------
    data : list of str
        Strings to format.

    Returns
    -------
    str
        Multiline string grouping entries by their first character.
    """

    upper = sorted([x for x in data if x[0].isupper()])
    [data.remove(u) for u in upper]

    gb = pd.DataFrame({"d": data, "g": pd.Series(data).str[0]}).groupby("g")
    agg = gb.apply(lambda x: ", ".join(sorted(x.d.values)))
    agg.loc["Upper"] = ", ".join(upper)
    agg.sort_index(inplace=True)
    agg = "\n".join(agg)
    return agg


[docs] def available_labels(): """Print all available measurement, component and species labels.""" m = sorted(list(base._trans_measurement.keys()) + list(base._templates.keys())) c = sorted(base._trans_component.keys()) s = sorted(base._trans_species.keys()) a = [] for case in (special, composition, elemental_abundance, datetime): for x in dir(case): x = getattr(case, x) if ( isclass(x) and issubclass(x, special.ArbitraryLabel) and x != special.ArbitraryLabel ): a.append(x.__name__) m = _clean_str_list_for_printing(m) c = _clean_str_list_for_printing(c) # s = _clean_str_list_for_printing(s) s = ", ".join(s) a = sorted(a) a = ", ".join(a) print( r"""TeXlabel knows Measurements ------------ {m} Components ---------- {c} Species ------- {s} Special ------- {a} """.format( m=m, c=c, s=s, a=a ) )