seaborn.lineplot#

seaborn.lineplot(data=None, *, x=None, y=None, hue=None, size=None, style=None, units=None, weights=None, palette=None, hue_order=None, hue_norm=None, sizes=None, size_order=None, size_norm=None, dashes=True, markers=None, style_order=None, estimator='mean', errorbar=('ci', 95), n_boot=1000, seed=None, orient='x', sort=True, err_style='band', err_kws=None, legend='auto', ci='deprecated', ax=None, **kwargs)#

複数のセマンティックグループ化の可能性を持つラインプロットを描画します。

`x` と `y` の関係は、`hue`、`size`、`style` パラメータを使用して、データの異なるサブセットについて表示できます。 これらのパラメータは、異なるサブセットを識別するために使用される視覚的なセマンティクスを制御します。 3つのセマンティックタイプすべてを使用することで、最大3次元を独立して表示できますが、このスタイルのプロットは解釈が難しく、効果がない場合がよくあります。 冗長なセマンティクス (つまり、同じ変数に `hue` と `style` の両方を使用する) を使用すると、グラフィックのアクセシビリティを向上させるのに役立ちます。

詳細はチュートリアルを参照してください。

存在する場合、`hue` (および程度は少ないですが `size`) セマンティクスのデフォルトの処理は、変数が「数値」データまたは「カテゴリ」データを表すと推測されるかどうかによって異なります。 特に、数値変数はデフォルトで連続的なカラーマップで表され、凡例エントリには、データに存在する可能性のある値を持つ通常の「ティック」が表示されます。 この動作は、以下で説明および図示するように、さまざまなパラメータを通じて制御できます。

デフォルトでは、プロットは `x` の各値で複数の `y` 値を集約し、中心傾向の推定値と、その推定値の信頼区間を表示します。

パラメータ:
**data**pandas.DataFrame, numpy.ndarray, マッピング、またはシーケンス

入力データ構造。 名前付き変数に割り当てることができるベクトルのロングフォームコレクション、または内部的に形状変更されるワイドフォームデータセット。

**x, y**`data` 内のベクトルまたはキー

x軸とy軸上の位置を指定する変数。

**hue**`data` 内のベクトルまたはキー

異なる色の線を作成するグループ化変数。 カテゴリ型または数値型のいずれかを使用できますが、後者の場合、カラーマッピングの動作が異なります。

**size**`data` 内のベクトルまたはキー

異なる幅の線を作成するグループ化変数。 カテゴリ型または数値型のいずれかを使用できますが、後者の場合、サイズマッピングの動作が異なります。

**style**`data` 内のベクトルまたはキー

異なる破線やマーカーを持つ線を作成するグループ化変数。 数値型のdtypeを持つことができますが、常にカテゴリ型として扱われます。

**units**`data` 内のベクトルまたはキー

サンプリング単位を識別するグループ化変数。 使用すると、適切なセマンティクスでユニットごとに個別の線が描画されますが、凡例エントリは追加されません。 正確なIDが必要ない場合に、実験レプリケートの分布を表示するのに役立ちます。

weightsベクトルまたは data 内のキー

重み付き推定の計算に使用されるデータ値または列。現在、重みを使用すると、統計量の選択肢は「平均」推定量と「ci」エラーバーに限定されます。

palette文字列、リスト、辞書、または matplotlib.colors.Colormap

hue セマンティクスをマッピングする際に使用する色を選択する方法。文字列値は color_palette() に渡されます。リストまたは辞書値はカテゴリマッピングを意味し、カラーマップオブジェクトは数値マッピングを意味します。

hue_order文字列のベクトル

hue セマンティクスのカテゴリレベルの処理とプロットの順序を指定します。

hue_normタプルまたは matplotlib.colors.Normalize

データ単位で正規化範囲を設定する値のペア、またはデータ単位を [0, 1] 区間にマッピングするオブジェクトのいずれか。使用は数値マッピングを意味します。

sizesリスト、辞書、またはタプル

size が使用される場合のサイズの選択方法を決定するオブジェクト。リストまたは辞書の引数は、各一意のデータ値のサイズを提供する必要があり、カテゴリ解釈を強制します。引数は、最小値、最大値のタプルにすることもできます。

size_orderリスト

size 変数レベルの表示順序を指定します。指定しない場合は、データから決定されます。size 変数が数値の場合は関係ありません。

size_normタプルまたは Normalize オブジェクト

size 変数が数値の場合、プロットオブジェクトのスケーリングのためのデータ単位での正規化。

dashesブール値、リスト、または辞書

style 変数の異なるレベルの線を描画する方法を決定するオブジェクト。True に設定するとデフォルトの破線コードが使用され、破線コードのリストまたは style 変数のレベルを破線コードにマッピングする辞書を渡すことができます。False に設定すると、すべてのサブセットに実線が使用されます。破線は matplotlib のように指定されます。(segment, gap) の長さのタプル、または実線を描画するための空の文字列。

markersブール値、リスト、または辞書

style 変数の異なるレベルのマーカーを描画する方法を決定するオブジェクト。True に設定するとデフォルトのマーカーが使用され、マーカーのリストまたは style 変数のレベルをマーカーにマッピングする辞書を渡すことができます。False に設定すると、マーカーのない線が描画されます。マーカーは matplotlib のように指定されます。

style_orderリスト

style 変数レベルの表示順序を指定します。指定しない場合は、データから決定されます。style 変数が数値の場合は関係ありません。

estimatorpandas メソッドの名前または呼び出し可能オブジェクトまたは None

同じ x レベルで y 変数の複数の観測値を aggregate するメソッド。None の場合、すべての観測値が描画されます。

errorbar文字列、(文字列、数値) タプル、または呼び出し可能オブジェクト

エラーバーメソッドの名前("ci"、"pi"、"se"、または "sd")、メソッド名とレベルパラメータを含むタプル、ベクトルから (最小値、最大値) 区間にマッピングする関数、またはエラーバーを非表示にする None。詳細は、エラーバーチュートリアル を参照してください。

n_boot整数

信頼区間を計算するために使用するブートストラップの数。

seed整数、numpy.random.Generator、または numpy.random.RandomState

再現可能なブートストラップのためのシードまたは乱数ジェネレーター。

orient”x” または “y”

データがソート/集計される次元。同様に、結果の関数の「独立変数」。

sortブール値

True の場合、データは x 変数と y 変数でソートされます。それ以外の場合、線はデータセットに表示される順序で点を接続します。

err_style”band” または “bars”

信頼区間を半透明のエラーバンドで描画するか、個別のエラーバーで描画するか。

err_kwsキーワード引数の辞書

エラーバーの外観を制御するための追加パラメータ。kwargs は、err_style に応じて、matplotlib.axes.Axes.fill_between() または matplotlib.axes.Axes.errorbar() のいずれかに渡されます。

legend”auto”、”brief”、”full”、または False

凡例の描画方法。"brief" の場合、数値の hue 変数と size 変数は、等間隔の値のサンプルで表されます。"full" の場合、すべてのグループが凡例にエントリを取得します。"auto" の場合、レベルの数に基づいて brief または full 表現を選択します。False の場合、凡例データは追加されず、凡例は描画されません。

ci整数または "sd" または None

集計時に描画する信頼区間のサイズ。

バージョン 0.12.0 以降は非推奨: より柔軟性のある新しい errorbar パラメータを使用してください。

axmatplotlib.axes.Axes

プロット用の既存の軸。それ以外の場合は、内部で matplotlib.pyplot.gca() を呼び出します。

kwargsキーと値のマッピング

その他のキーワード引数は matplotlib.axes.Axes.plot() に渡されます。

戻り値:
matplotlib.axes.Axes

プロットを含む matplotlib 軸。

関連項目

scatterplot

点を使用してデータをプロットします。

pointplot

マーカーと線を使用して点推定値と信頼区間をプロットします。

flights データセットには、10 年間の毎月の航空旅客データがあります

flights = sns.load_dataset("flights")
flights.head()
乗客数
0 1949 1月 112
1 1949 2月 118
2 1949 3月 132
3 1949 4月 129
4 1949 5月 121

ロングフォームデータを使用してラインプロットを描画するには、x 変数と y 変数を割り当てます

may_flights = flights.query("month == 'May'")
sns.lineplot(data=may_flights, x="year", y="passengers")
../_images/lineplot_3_0.png

データフレームをワイドフォーム表現にピボットします

flights_wide = flights.pivot(index="year", columns="month", values="passengers")
flights_wide.head()
1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
1949 112 118 132 129 121 135 148 148 136 119 104 118
1950 115 126 141 135 125 149 170 170 158 133 114 140
1951 145 150 178 163 172 178 199 199 184 162 146 166
1952 171 180 193 181 183 218 230 242 209 191 172 194
1953 196 196 236 235 229 243 264 272 237 211 180 201

単一のベクトルをプロットするには、それを data に渡します。ベクトルが pandas.Series の場合、そのインデックスに対してプロットされます

sns.lineplot(data=flights_wide["May"])
../_images/lineplot_7_0.png

ワイドフォームデータセット全体を data に渡すと、列ごとに個別の線がプロットされます

sns.lineplot(data=flights_wide)
../_images/lineplot_9_0.png

ロングフォームモードでデータセット全体を渡すと、繰り返される値 (各年) にわたって集計され、平均と 95% 信頼区間が表示されます

sns.lineplot(data=flights, x="year", y="passengers")
../_images/lineplot_11_0.png

グループ化セマンティクス (huesize、または style) を割り当てて、個別の線をプロットします

sns.lineplot(data=flights, x="year", y="passengers", hue="month")
../_images/lineplot_13_0.png

同じ列を複数のセマンティック変数に割り当てることができ、プロットのアクセシビリティが向上する可能性があります

sns.lineplot(data=flights, x="year", y="passengers", hue="month", style="month")
../_images/lineplot_15_0.png

orient パラメータを使用して、プロットの垂直方向に沿って集計とソートを実行します

sns.lineplot(data=flights, x="passengers", y="year", orient="y")
../_images/lineplot_17_0.png

各セマンティック変数は、異なる列を表すこともできます。そのためには、より複雑なデータセットが必要です

fmri = sns.load_dataset("fmri")
fmri.head()
被験者 時点 イベント 領域 信号
0 s13 18 刺激 頭頂 -0.017552
1 s5 14 刺激 頭頂 -0.080883
2 s12 18 刺激 頭頂 -0.081033
3 s11 18 刺激 頭頂 -0.046134
4 s10 18 刺激 頭頂 -0.037970

セマンティックグループ化が使用されている場合でも、繰り返される観測値は集計されます

sns.lineplot(data=fmri, x="timepoint", y="signal", hue="event")
../_images/lineplot_21_0.png

huestyle の両方を割り当てて、2 つの異なるグループ化変数を表します

sns.lineplot(data=fmri, x="timepoint", y="signal", hue="region", style="event")
../_images/lineplot_23_0.png

style 変数を割り当てる場合、グループを区別するために破線の代わりに (または破線とともに) マーカーを使用できます

sns.lineplot(
    data=fmri,
    x="timepoint", y="signal", hue="event", style="event",
    markers=True, dashes=False
)
../_images/lineplot_25_0.png

エラーバンドの代わりにエラーバーを表示し、2 つの標準誤差幅に拡張します

sns.lineplot(
    data=fmri, x="timepoint", y="signal", hue="event", err_style="bars", errorbar=("se", 2),
)
../_images/lineplot_27_0.png

units 変数を割り当てると、セマンティックマッピングを適用せずに複数の線がプロットされます

sns.lineplot(
    data=fmri.query("region == 'frontal'"),
    x="timepoint", y="signal", hue="event", units="subject",
    estimator=None, lw=1,
)
../_images/lineplot_29_0.png

数値グループ化変数を含む別のデータセットを読み込みます

dots = sns.load_dataset("dots").query("align == 'dots'")
dots.head()
配置 選択 時間 コヒーレンス 発火率
0 ドット T1 -80 0.0 33.189967
1 ドット T1 -80 3.2 31.691726
2 ドット T1 -80 6.4 34.279840
3 ドット T1 -80 12.8 32.631874
4 ドット T1 -80 25.6 35.060487

数値変数を hue に割り当てると、異なるデフォルトパレットと量的カラーマッピングを使用して、異なる方法でマッピングされます

sns.lineplot(
    data=dots, x="time", y="firing_rate", hue="coherence", style="choice",
)
../_images/lineplot_33_0.png

palette を設定し、matplotlib.colors.Normalize オブジェクトを渡すことにより、カラーマッピングを制御します

sns.lineplot(
    data=dots.query("coherence > 0"),
    x="time", y="firing_rate", hue="coherence", style="choice",
     palette="flare", hue_norm=mpl.colors.LogNorm(),
)
../_images/lineplot_35_0.png

または、Python のリストまたは辞書として特定の色を渡します

palette = sns.color_palette("mako_r", 6)
sns.lineplot(
    data=dots, x="time", y="firing_rate",
    hue="coherence", style="choice",
    palette=palette
)
../_images/lineplot_37_0.png

線の幅を数値変数にマッピングするために、size セマンティクスを割り当てます。

sns.lineplot(
    data=dots, x="time", y="firing_rate",
    size="coherence", hue="choice",
    legend="full"
)
../_images/lineplot_39_0.png

タプル sizes=(最小値, 最大値) を渡して、size セマンティクスのマッピングに使用する線の幅の範囲を制御します。

sns.lineplot(
    data=dots, x="time", y="firing_rate",
    size="coherence", hue="choice",
    sizes=(.25, 2.5)
)
../_images/lineplot_41_0.png

デフォルトでは、観測値は x でソートされます。これを無効にすると、データセットに表示される順序で線がプロットされます。

x, y = np.random.normal(size=(2, 5000)).cumsum(axis=1)
sns.lineplot(x=x, y=y, sort=False, lw=1)
../_images/lineplot_43_0.png

relplot() を使用して、lineplot()FacetGrid を組み合わせます。これにより、追加のカテゴリ変数内でグループ化できます。 relplot() を使用すると、ファセット間でセマンティックマッピングの同期が保証されるため、FacetGrid を直接使用するよりも安全です。

sns.relplot(
    data=fmri, x="timepoint", y="signal",
    col="region", hue="event", style="event",
    kind="line"
)
../_images/lineplot_45_0.png