Here's how to get output like this using matplotlib and its GridSpec class:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.gridspec as gs
%matplotlib inline
df = pd.DataFrame([
np.random.randn(1000),
np.random.random_integers(1, 2, 1000)
]).T
df.columns = ["value", "group"]
fig = plt.figure(figsize=(10, 6))
grid = gs.GridSpec(2, 2, height_ratios=[3, 1])
for i, g in enumerate([1, 2]):
subset = df['value'][df['group'] == g]
# Histogram
ax = plt.subplot(grid[i])
ax.hist(list(subset), color='k', alpha=0.4)
ax.set_title("Group %s" % g)
# Box plot
ax2 = plt.subplot(grid[i+2])
pd.DataFrame(subset).boxplot(vert=False, return_type='axes')
ax2.set_yticklabels([''])
fig.tight_layout()
fig.subplots_adjust(top=0.85)
fig.suptitle('Example', fontsize=20)
None # Don't display the last thing -- `%matplotlib inline` will display the graphs no matter what.
It looks like Gist embed is broken here on PostHaven for IPython notebooks, so the embed below may look strange:
🌟 Was this page helpful? Please let me know with this quick, 3 question survey.