seaborn.scatterplot#
- seaborn.scatterplot(data=None, *, x=None, y=None, hue=None, size=None, style=None, palette=None, hue_order=None, hue_norm=None, sizes=None, size_order=None, size_norm=None, markers=True, style_order=None, legend='auto', ax=None, **kwargs)#
複数の意味グループ分けの可能性を持つ散布図を描画します。
x
とy
の関係は、hue
、size
、およびstyle
パラメータを使用して、データの異なるサブセットに対して表示できます。これらのパラメータは、異なるサブセットを識別するために使用される視覚的な意味を制御します。3つの意味タイプをすべて使用することで、最大3つの次元を独立して表示できますが、このプロットのスタイルは解釈が難しい場合があり、効果がないことがよくあります。冗長な意味(つまり、同じ変数に対してhue
とstyle
の両方)を使用すると、グラフィックをよりアクセスしやすくするのに役立ちます。詳細については、チュートリアルを参照してください。
デフォルトでは、
hue
(そして、程度は低いですがsize
)の意味がどのように扱われるかは、変数が「数値」データまたは「カテゴリ」データを表していると推測されるかどうかによって異なります。特に、数値変数はデフォルトで連続的なカラーマップで表され、凡例のエントリには、データに存在する可能性のある値を持つ規則的な「目盛り」が表示されます。この動作は、以下に示すように、さまざまなパラメータを通じて制御できます。- パラメータ:
- datapandas.DataFrame、numpy.ndarray、マッピング、またはシーケンス
入力データ構造。名前付き変数に割り当てることができるベクトルの長い形式のコレクション、または内部的にリシェイプされるワイド形式のデータセットのいずれか。
- x, y
data
内のベクトルまたはキー x軸とy軸の位置を指定する変数。
- hue
data
内のベクトルまたはキー 異なる色を持つ点を生成するグループ化変数。カテゴリまたは数値のいずれかですが、色のマッピングは後者の場合、異なる動作をします。
- size
data
内のベクトルまたはキー 異なるサイズを持つ点を生成するグループ化変数。カテゴリまたは数値のいずれかですが、サイズのマッピングは後者の場合、異なる動作をします。
- style
data
内のベクトルまたはキー 異なるマーカーを持つ点を生成するグループ化変数。数値のdtypeを持つことができますが、常にカテゴリとして扱われます。
- 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
変数が数値の場合に、プロットオブジェクトをスケーリングするためのデータ単位での正規化。- markersブール値、リスト、または辞書
style
変数の異なるレベルのマーカーをどのように描画するかを決定するオブジェクト。True
に設定するとデフォルトのマーカーが使用され、マーカーのリスト、またはstyle
変数のレベルをマーカーにマッピングする辞書を渡すことができます。False
に設定すると、マーカーのない線が描画されます。マーカーは matplotlib で指定される形式で指定されます。- style_orderリスト
style
変数のレベルの表示順序を指定します。指定しない場合はデータから決定されます。style
変数が数値の場合は関係ありません。- legend“auto”, “brief”, “full”, または False
凡例の描画方法。「brief」の場合、数値の
hue
およびsize
変数は、均等に間隔をあけた値のサンプルで表現されます。「full」の場合、すべてのグループが凡例にエントリを取得します。「auto」の場合、レベルの数に基づいて、brief または full の表現を選択します。False
の場合、凡例データは追加されず、凡例も描画されません。- ax
matplotlib.axes.Axes
プロット用の既存の軸。それ以外の場合は、内部で
matplotlib.pyplot.gca()
を呼び出します。- kwargsキー、値のマッピング
その他のキーワード引数は、
matplotlib.axes.Axes.scatter()
に渡されます。
- 戻り値:
matplotlib.axes.Axes
プロットを含む matplotlib の軸。
例
これらの例では、数値変数とカテゴリ変数の混合である「tips」データセットを使用します
tips = sns.load_dataset("tips") tips.head()
total_bill tip sex smoker day time size 0 16.99 1.01 Female No Sun Dinner 2 1 10.34 1.66 Male No Sun Dinner 3 2 21.01 3.50 Male No Sun Dinner 3 3 23.68 3.31 Male No Sun Dinner 2 4 24.59 3.61 Female No Sun Dinner 4 ロングフォームデータを渡し、
x
とy
を割り当てると、2 つの変数間の散布図が描画されますsns.scatterplot(data=tips, x="total_bill", y="tip")
hue
に変数を割り当てると、そのレベルがポイントの色にマッピングされますsns.scatterplot(data=tips, x="total_bill", y="tip", hue="time")
同じ変数を
style
に割り当てると、マーカーも変化し、よりアクセスしやすいプロットが作成されますsns.scatterplot(data=tips, x="total_bill", y="tip", hue="time", style="time")
hue
とstyle
を異なる変数に割り当てると、色とマーカーが独立して変化しますsns.scatterplot(data=tips, x="total_bill", y="tip", hue="day", style="time")
hue
に割り当てられた変数が数値の場合、セマンティックマッピングは定量的になり、異なるデフォルトのパレットが使用されますsns.scatterplot(data=tips, x="total_bill", y="tip", hue="size")
カテゴリパレットの名前、または明示的な色(Python のリストまたは辞書)を渡して、
hue
変数のカテゴリマッピングを強制しますsns.scatterplot(data=tips, x="total_bill", y="tip", hue="size", palette="deep")
多数の一意な数値がある場合、凡例には代表的な均等間隔のセットが表示されます
tip_rate = tips.eval("tip / total_bill").rename("tip_rate") sns.scatterplot(data=tips, x="total_bill", y="tip", hue=tip_rate)
数値変数を
size
に割り当てて、ポイントの領域にセマンティックマッピングを適用することもできますsns.scatterplot(data=tips, x="total_bill", y="tip", hue="size", size="size")
sizes
でマーカー領域の範囲を制御し、legend="full"
を設定して、すべての一意な値を凡例に強制的に表示しますsns.scatterplot( data=tips, x="total_bill", y="tip", hue="size", size="size", sizes=(20, 200), legend="full" )
値のタプルまたは
matplotlib.colors.Normalize
オブジェクトをhue_norm
に渡して、定量的な色相マッピングを制御しますsns.scatterplot( data=tips, x="total_bill", y="tip", hue="size", size="size", sizes=(20, 200), hue_norm=(0, 7), legend="full" )
Python のリストまたはマーカーコードの辞書を渡すことにより、
style
変数をマッピングするために使用される特定のマーカーを制御しますmarkers = {"Lunch": "s", "Dinner": "X"} sns.scatterplot(data=tips, x="total_bill", y="tip", style="time", markers=markers)
追加のキーワード引数は
matplotlib.axes.Axes.scatter()
に渡され、セマンティックにマッピングされていないプロットの属性を直接設定できますsns.scatterplot(data=tips, x="total_bill", y="tip", s=100, color=".2", marker="+")
前の例では、ロングフォームのデータセットを使用しました。ワイドフォームのデータを操作する場合、各列は
hue
とstyle
マッピングの両方を使用して、そのインデックスに対してプロットされますindex = pd.date_range("1 1 2000", periods=100, freq="m", name="date") data = np.random.randn(100, 4).cumsum(axis=0) wide_df = pd.DataFrame(data, index, ["a", "b", "c", "d"]) sns.scatterplot(data=wide_df)
relplot()
を使用して、scatterplot()
とFacetGrid
を組み合わせます。これにより、追加のカテゴリ変数内でグループ化し、複数のサブプロットにまたがってプロットすることができます。relplot()
を使用する方が、FacetGrid
を直接使用するよりも安全です。これは、ファセット間でセマンティックマッピングの同期を保証するためです。sns.relplot( data=tips, x="total_bill", y="tip", col="time", hue="day", style="day", kind="scatter" )