Source code for neurokit2.stats.summary

# -*- coding: utf-8 -*-
import matplotlib.pyplot as plt
import numpy as np

from .density import density
from .rescale import rescale


[docs]def summary_plot(x, **kwargs): """Descriptive plot. Visualize a distribution with density, histogram, boxplot and rugs plots all at once. Examples -------- >>> import neurokit2 as nk >>> import numpy as np >>> >>> x = np.random.normal(size=100) >>> fig = nk.summary_plot(x) >>> fig #doctest: +SKIP """ if "ax" in kwargs: fig = None ax = kwargs.get("ax") kwargs.pop("ax") else: fig, ax = plt.subplots() # Histogram counts, bins = np.histogram(x, **kwargs) ax.hist(bins[:-1], bins, weights=counts, color="#2196F3", edgecolor="white", zorder=1, **kwargs) # Density x_axis, y_axis = density(x, **kwargs) y_axis = rescale(y_axis, to=[0, np.max(counts)]) ax.plot(x_axis, y_axis, color="#E91E63", linewidth=1.5, zorder=2, **kwargs) # Points y_axis = np.full(len(x), 0.1) ax.scatter(x, y_axis, c="black", alpha=0.5, marker="|", zorder=3, **kwargs) # Boxplot ax.boxplot( x, vert=False, positions=[np.max(counts) / 10], widths=np.max(counts) / 10, manage_ticks=False, boxprops=dict(linewidth=1.5), medianprops=dict(linewidth=1.5), whiskerprops=dict(linewidth=1.5), capprops=dict(linewidth=1.5), zorder=4, **kwargs ) return fig