<Python, seaborn, numpy> FacetGrid と distplot で2軸表記する。
seaborn.FacetGrid
とseaborn.distplot()
で、縦軸y-axis
を2軸にして、
- かつ、
- 片方は度数
- 片方は正規分布曲線の確立密度
にする。
g.map()
でちゃっと、できなかったので、
g.axes
の1要素づつのインデックスをnp.nditer()
でチクタク取り出して、
ax.twinx()
で第2軸のオブジェクトを作って、
g.facet_data()
でaxごとにぐりぐり回して作図。
In [1]: import seaborn as sns In [2]: import numpy as np In [3]: import matplotlib.pyplot as plt In [4]: tips = sns.load_dataset('tips') In [11]: tips.columns Out[11]: Index(['total_bill', 'tip', 'sex', 'smoker', 'day', 'time', 'size'], dtype='object') In [17]: g = sns.FacetGrid(tips, row='smoker', col='time') ...: ax1 = g.axes ...: ax2 = np.empty_like(g.axes) ...: ...: it = np.nditer(ax1, flags=['multi_index', 'refs_ok']) ...: while not it.finished: ...: i = it.multi_index[0] ...: j = it.multi_index[1] ...: ax2[i][j] = ax1[i][j].twinx() ...: ax2[i][j].get_shared_y_axes().join(ax2[0][0], ax2[i][j]) ...: it.iternext() ...: ...: for data in g.facet_data(): ...: i = data[0][0] ...: j = data[0][1] ...: sns.distplot(data[1]['total_bill'], hist_kws={'normed':True}, hist=False, ax=ax1[i][j]) ...: sns.distplot(data[1]['total_bill'], hist_kws={'normed':False}, kde=False, ax=ax2[i][j]) ...:
Seabronのマニュアル。
seaborn.FacetGrid — seaborn 0.6.0 documentation
seaborn.distplot — seaborn 0.6.0 documentation