Histogram with Boxplot above in Python Histogram with Boxplot above in Python python python

Histogram with Boxplot above in Python


import numpy as npimport seaborn as snsimport matplotlib.pyplot as pltsns.set(style="ticks")x = np.random.randn(100)f, (ax_box, ax_hist) = plt.subplots(2, sharex=True,                                     gridspec_kw={"height_ratios": (.15, .85)})sns.boxplot(x, ax=ax_box)sns.distplot(x, ax=ax_hist)ax_box.set(yticks=[])sns.despine(ax=ax_hist)sns.despine(ax=ax_box, left=True)

enter image description here


Expanding on the answer from @mwaskom, I made a little adaptable function.

import seaborn as snsdef histogram_boxplot(data, xlabel = None, title = None, font_scale=2, figsize=(9,8), bins = None):    """ Boxplot and histogram combined    data: 1-d data array    xlabel: xlabel     title: title    font_scale: the scale of the font (default 2)    figsize: size of fig (default (9,8))    bins: number of bins (default None / auto)    example use: histogram_boxplot(np.random.rand(100), bins = 20, title="Fancy plot")    """    sns.set(font_scale=font_scale)    f2, (ax_box2, ax_hist2) = plt.subplots(2, sharex=True, gridspec_kw={"height_ratios": (.15, .85)}, figsize=figsize)    sns.boxplot(data, ax=ax_box2)    sns.distplot(data, ax=ax_hist2, bins=bins) if bins else sns.distplot(data, ax=ax_hist2)    if xlabel: ax_hist2.set(xlabel=xlabel)    if title: ax_box2.set(title=title)    plt.show()histogram_boxplot(np.random.randn(100), bins = 20, title="Fancy plot", xlabel="Some values")

Image


def histogram_boxplot(feature, figsize=(15,10), bins=None):    f,(ax_box,ax_hist)=plt.subplots(nrows=2,sharex=True, gridspec_kw={'height_ratios':(.25,.75)},figsize=figsize)                                                                                                                                         sns.distplot(feature,kde=False,ax=ax_hist,bins=bins)     sns.boxplot(feature,ax=ax_box, color='Red')    ax_hist.axvline(np.mean(feature),color='g',linestyle='-')    ax_hist.axvline(np.median(feature),color='y',linestyle='--')