Source code for ctd.plotting

"""
Plotting module
"""

import matplotlib.pyplot as plt
import pandas as pd
from pandas_flavor import register_dataframe_method, register_series_method


[docs] @register_series_method @register_dataframe_method def plot_cast(df, secondary_y=False, label=None, ax=None, *args, **kwargs): """ Plot a CTD variable with the index in the y-axis instead of x-axis. """ fignums = plt.get_fignums() if ax is None and not fignums: ax = plt.axes() fig = ax.get_figure() else: ax = plt.gca() fig = plt.gcf() kwargs.setdefault("figsize", (5.25, 6.75)) figsize = kwargs.pop("figsize") fig.set_size_inches(figsize) y_inverted = False if not getattr(ax, "y_inverted", False): ax.y_inverted = True y_inverted = True if secondary_y: ax = ax.twiny() xlabel = getattr(df, "name", None) ylabel = getattr(df.index, "name", None) if isinstance(df, pd.DataFrame): labels = label if label else df.columns for k, (_col, series) in enumerate(df.items()): ax.plot(series, series.index, label=labels[k]) elif isinstance(df, pd.Series): label = label if label else str(df.name) ax.plot(df.values, df.index, *args, label=label, **kwargs) ax.set_ylabel(ylabel) ax.set_xlabel(xlabel) if y_inverted and not secondary_y: ax.invert_yaxis() return ax