Pynote

Python、機械学習、画像処理について

seaborn - lineplot() で折れ線グラフを描画する方法について

基本的な使い方

import seaborn as sns; sns.set()

fmri = sns.load_dataset('fmri')
sns.lineplot(x='timepoint', y='signal', data=fmri)


線の太さ、色を設定する。

linewidth 引数で線の太さを指定できる。

sns.lineplot(x='timepoint', y='signal', data=fmri, lw=3)

color 引数で線の色を指定できる。

sns.lineplot(x='timepoint', y='signal', data=fmri, color='coral')


ラベルを設定する。

label 引数でラベルを指定できる。

sns.lineplot(x='timepoint', y='signal', data=fmri, label='label')


色分けして表示する変数を指定する。

sns.lineplot(x='timepoint', y='signal', data=fmri, hue='event')


スタイルを変更して表示する変数を指定する。

sns.lineplot(x='timepoint', y='signal', data=fmri,
             style='event', markers=True)

marker=False の場合、マーカーを表示しない。

sns.lineplot(x='timepoint', y='signal', data=fmri,
             style='event', markers=False)


データをソートしてから描画するかどうか

例えば、ランダムウォークの場合、データの x 方向の値は単調増加するわけではないが、デフォルトではソートされてしまうため、このようなデータを正しく表示できない。

x, y = np.random.randn(2, 5000).cumsum(axis=1)

sns.lineplot(x=x, y=y, lw=1)

sort=False とすることで、このようなデータを正しく表示できる。

x, y = np.random.randn(2, 5000).cumsum(axis=1)

# x, y をソートしないでそのまま表示する。
sns.lineplot(x=x, y=y, sort=False, lw=1)