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
パラメータを使用してください。- ax
matplotlib.axes.Axes
プロット用の既存の軸。それ以外の場合は、内部で
matplotlib.pyplot.gca()
を呼び出します。- kwargsキーと値のマッピング
その他のキーワード引数は
matplotlib.axes.Axes.plot()
に渡されます。
- **data**
- 戻り値:
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")
データフレームをワイドフォーム表現にピボットします
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"])
ワイドフォームデータセット全体を
data
に渡すと、列ごとに個別の線がプロットされますsns.lineplot(data=flights_wide)
ロングフォームモードでデータセット全体を渡すと、繰り返される値 (各年) にわたって集計され、平均と 95% 信頼区間が表示されます
sns.lineplot(data=flights, x="year", y="passengers")
グループ化セマンティクス (
hue
、size
、またはstyle
) を割り当てて、個別の線をプロットしますsns.lineplot(data=flights, x="year", y="passengers", hue="month")
同じ列を複数のセマンティック変数に割り当てることができ、プロットのアクセシビリティが向上する可能性があります
sns.lineplot(data=flights, x="year", y="passengers", hue="month", style="month")
orient
パラメータを使用して、プロットの垂直方向に沿って集計とソートを実行しますsns.lineplot(data=flights, x="passengers", y="year", orient="y")
各セマンティック変数は、異なる列を表すこともできます。そのためには、より複雑なデータセットが必要です
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")
hue
とstyle
の両方を割り当てて、2 つの異なるグループ化変数を表しますsns.lineplot(data=fmri, x="timepoint", y="signal", hue="region", style="event")
style
変数を割り当てる場合、グループを区別するために破線の代わりに (または破線とともに) マーカーを使用できますsns.lineplot( data=fmri, x="timepoint", y="signal", hue="event", style="event", markers=True, dashes=False )
エラーバンドの代わりにエラーバーを表示し、2 つの標準誤差幅に拡張します
sns.lineplot( data=fmri, x="timepoint", y="signal", hue="event", err_style="bars", errorbar=("se", 2), )
units
変数を割り当てると、セマンティックマッピングを適用せずに複数の線がプロットされますsns.lineplot( data=fmri.query("region == 'frontal'"), x="timepoint", y="signal", hue="event", units="subject", estimator=None, lw=1, )
数値グループ化変数を含む別のデータセットを読み込みます
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", )
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(), )
または、Python のリストまたは辞書として特定の色を渡します
palette = sns.color_palette("mako_r", 6) sns.lineplot( data=dots, x="time", y="firing_rate", hue="coherence", style="choice", palette=palette )
線の幅を数値変数にマッピングするために、
size
セマンティクスを割り当てます。sns.lineplot( data=dots, x="time", y="firing_rate", size="coherence", hue="choice", legend="full" )
タプル
sizes=(最小値, 最大値)
を渡して、size
セマンティクスのマッピングに使用する線の幅の範囲を制御します。sns.lineplot( data=dots, x="time", y="firing_rate", size="coherence", hue="choice", sizes=(.25, 2.5) )
デフォルトでは、観測値は
x
でソートされます。これを無効にすると、データセットに表示される順序で線がプロットされます。x, y = np.random.normal(size=(2, 5000)).cumsum(axis=1) sns.lineplot(x=x, y=y, sort=False, lw=1)
relplot()
を使用して、lineplot()
とFacetGrid
を組み合わせます。これにより、追加のカテゴリ変数内でグループ化できます。relplot()
を使用すると、ファセット間でセマンティックマッピングの同期が保証されるため、FacetGrid
を直接使用するよりも安全です。sns.relplot( data=fmri, x="timepoint", y="signal", col="region", hue="event", style="event", kind="line" )