In [1]:
%matplotlib inline
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

test1

In [2]:
data = np.abs(np.random.randn(100, 20))
clr = sns.hls_palette(data.shape[1])
max_ = np.max(data)
width = 0.3
for i in range(data.shape[1]):
    zorder = i+1
    x = -data[:,i]/(max_*width) + i
    y = range(data.shape[0])
    plt.plot(x, y, color='k', lw=0.2, zorder=zorder)
    plt.fill_betweenx(y, x, i, color=clr[i], alpha=0.9, zorder=zorder)

test2

In [3]:
import pandas_datareader.data as web
df = web.get_data_fred('NIKKEI225', start='20000101')
In [4]:
arr = df['NIKKEI225'].dropna().pct_change().fillna(0)

width = 0.3
gb = arr.groupby([arr.index.year, arr.index.quarter])
n = len(gb)
clr = sns.hls_palette(n)

freqlist = []
vallist = []
xtickslabel = []
for k,v in gb:
    xtickslabel.append(k)
    cut, bins = pd.cut(v, bins=25, retbins=True)
    freqlist.append(cut.value_counts().sort_index().values)
    vallist.append(bins[:-1])

max_ = np.max(freqlist)
plt.figure(figsize=(15,10))
for i,(v,freq) in enumerate(zip(vallist, freqlist)):
    f = -freq/(max_*width) + i
    zorder = i+1
    plt.plot(f, v, color='k', lw=0.3, zorder=zorder)
    plt.fill_betweenx(v, f, i, color=clr[i], alpha=1, zorder=zorder)

plt.xticks(range(n), xtickslabel, rotation=-45)
plt.xlim(-max_/(max_*width), n);
plt.ylim(np.min(vallist), np.max(vallist));