Seabornのlmplotを使用して線形回帰をプロットし、データセットをカテゴリ変数を使用して2つのグループに分割しています。
xとyの両方について、両方のプロットの下限を手動で設定したいのですが、上限はSeabornのデフォルトのままにしておきます。簡単な例を次に示します。
import pandas as pd
import seaborn as sns
import random
n = 200
random.seed(2014)
base_x = [random.random() for i in range(n)]
base_y = [2*i for i in base_x]
errors = [random.uniform(0,1) for i in range(n)]
y = [i+j for i,j in zip(base_y,errors)]
df = pd.DataFrame({'X': base_x,
'Y': y,
'Z': ['A','B']*(n/2)})
mask_for_b = df.Z == 'B'
df.loc[mask_for_b,['X','Y']] = df.loc[mask_for_b,] *2
sns.lmplot('X','Y',df,col='Z',sharex=False,sharey=False)
これにより、次のように出力されます。
ただし、この例では、xlimとylimを(0、*)にします。sns.plt.ylimとsns.plt.xlimを使用してみましたが、これらは右側のプロットにのみ影響します。例:
sns.plt.ylim(0,)
sns.plt.xlim(0,)
FacetGridの各プロットのxlimとylimにアクセスするにはどうすればよいですか?
numpy.random
モジュールに慣れていると、ランダムデータを生成する時間を大幅に節約できます(これは非常に便利なことです!)。たとえば、あなたが得ることができるbase_x
とbase_y
してbase_x = np.random.rand(n); base_y = base_x * 2
。y
変数は、その後、同様にベクトル化操作で生成することができます。