# 4. Distribution Plot

Let’s use a different plotting style, bmh.

[1]:

%matplotlib inline
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
import pandas as pd

plt.style.use('bmh')

np.random.seed(37)


## 4.1. Basic

Here are two basic density plots using different bandwith methods.

[2]:

sigma = 1.0
mu = 100.8

x = sigma * np.random.randn(1000) + mu
s = pd.Series(x)

fig, ax = plt.subplots(1, 2, figsize=(15, 3))

_ = s.plot(kind='kde', bw_method='scott', ax=ax[0])
_ = s.plot(kind='kde', bw_method='silverman', ax=ax[1])

_ = ax[0].set_title('Density plot, bandwith=scott')
_ = ax[1].set_title('Density plot, bandwith=silverman')


## 4.2. Multiple densities in a single plot

Multiple densities in a single plot may be achieved through Pandas dataframes.

[3]:

df = pd.DataFrame({
'x': 1.0 * np.random.randn(1000) + 100,
'y': 2.0 * np.random.randn(1000) + 105
})

fig, ax = plt.subplots(figsize=(10, 5))

_ = df.plot(kind='kde', ax=ax)
_ = ax.set_title('Multiple densities')


## 4.3. Density with cumulative distribution plot

This plot overlays density and cumulative plots using Seaborn.

[4]:

sigma = 1.0
mu = 100.8

x = sigma * np.random.randn(1000) + mu

fig, ax1 = plt.subplots(figsize=(10, 5))

_ = sns.kdeplot(x, ax=ax1, color='r', label='density')

ax2 = ax1.twinx()

_ = sns.kdeplot(x, ax=ax2, cumulative=True, color='g', label='cumulative')

_ = ax1.set_ylabel('probability', color='r')
_ = ax2.set_ylabel('cumulative', color='g')

_ = ax1.tick_params(axis='y', labelcolor='r')
_ = ax2.tick_params(axis='y', labelcolor='g')

_ = ax1.legend().set_visible(False)
_ = ax2.legend().set_visible(False)

_ = ax1.set_title('Density with cumulative distribution plots')


## 4.4. Histogram overlay

[5]:

sigma = 1.0
mu = 100.8

x = sigma * np.random.randn(1000) + mu
s = pd.Series(x)

fig, ax = plt.subplots(figsize=(15, 3))

ax1, ax2 = ax, ax.twinx()

_ = s.plot(kind='hist', bins=15, alpha=0.5, color='r', ax=ax1)
_ = s.plot(kind='kde', bw_method='scott', color='b', ax=ax2)

_ = ax.set_title('Density plot with histogram')