Seabornの pairplot
関数を使用すると、データセットにペアワイズ関係をプロットできます。
ドキュメントによると(ハイライトが追加されました):
デフォルトでは、この関数は軸のグリッドを作成し、データ内の各変数が単一の行のy軸と単一の列のx軸で共有されるようにします。対角軸は異なる方法で処理され、その列の変数のデータの単変量分布を示すプロットを描画します。
変数のサブセットを表示したり、行と列に異なる変数をプロットしたりすることもできます。
行と列に異なる変数をサブセット化する例は1つしか見つかりませんでした ここ (これはPairGridとpairplot() セクション)。ご覧のとおり、同じ単一の従属変数(y_vars)に対して多くの独立変数(x_vars)をプロットしており、結果は次のようになります。かなりいい。
私は、多くの従属変数に対して単一の独立変数をプロットするのと同じことをしようとしています。
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
ages = np.random.gamma(6,3, size=50)
data = pd.DataFrame({"age": ages,
"weight": 80*ages**2/(ages**2+10**2)*np.random.normal(1,0.2,size=ages.shape),
"height": 1.80*ages**5/(ages**5+12**5)*np.random.normal(1,0.2,size=ages.shape),
"happiness": (1-ages*0.01*np.random.normal(1,0.3,size=ages.shape))})
pp = sns.pairplot(data=data,
x_vars=['age'],
y_vars=['weight', 'height', 'happiness'])
問題は、サブプロットが垂直に配置され、それを変更する方法が見つからなかったことです。
その場合、タイリング構造は、[〜#〜] y [〜#〜]軸がすべてのサブプロットでラベル付けされるほどきれいではないことを知っています。また、次のような手作業でプロットを作成できることもわかっています。
fig, axes = plt.subplots(ncols=3)
for i, yvar in enumerate(['weight', 'height', 'happiness']):
axes[i].scatter(data['age'],data[yvar])
それでも、シーボーンの使い方を学んでいて、インターフェースがとても便利だと思うので、方法はないかと思います。また、この例は非常に簡単ですが、より複雑なデータセットの場合、seabornは、raw-matplotlibアプローチを非常に迅速に(hue、開始する)