Source code for paralytics.utils.plotting

"""Utilities for drawing plots."""


import matplotlib.pyplot as plt
import pandas as pd
try:
    import seaborn as sns
except ImportError as e:
    sns = e


__all__ = [
    'multipleplots'
]


[docs]def multipleplots(data, x, nrows=1, ncols=1, figsize=(8, 6), plot_type='scatterplot', **params): """Paints any specified plot from the seaborn library multiple times. Parameters ---------- data: DataFrame Data which columns will be plotted. x: list, optional (default=1) List of columns to plot one after another. n{rows, cols}: int, optional (default=1) Number of {rows, cols} transferred to plt.subplots(). figsize: list-like, optional (default=(8, 6)) Size of every figure created on subsequent axes. plot_type: string, optional (default='scatterplot') Specific plot from the seaborn library to be plotted multiple times against every given element from x. params: dict Dictionary of optional parameters passed to the chosen seaborn plot. Returns ------- None """ if isinstance(sns, ImportError): raise ImportError( "`multipleplots` requires extra requirements installed. " "Reinstall paralytics package with 'plot' extra " "specified or install the dependencies directly " "from the source." ).with_traceback(sns.__traceback__) assert isinstance(data, pd.DataFrame), \ 'Input "data" must be an instance of pandas.DataFrame()!' assert isinstance(x, list), \ 'Input "x" must be the list of data columns to plot!' fig, axes = plt.subplots(nrows=nrows, ncols=ncols, figsize=figsize) axes = axes.flatten() for idx, ax in enumerate(axes): plt.sca(ax) try: getattr(sns, plot_type)(x[idx], data=data, **params) except AttributeError: print('Consider changing the "plot_type" parameter.') raise