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)#

複数の意味グループ分けの可能性を持つ散布図を描画します。

xyの関係は、huesize、およびstyleパラメータを使用して、データの異なるサブセットに対して表示できます。これらのパラメータは、異なるサブセットを識別するために使用される視覚的な意味を制御します。3つの意味タイプをすべて使用することで、最大3つの次元を独立して表示できますが、このプロットのスタイルは解釈が難しい場合があり、効果がないことがよくあります。冗長な意味(つまり、同じ変数に対してhuestyleの両方)を使用すると、グラフィックをよりアクセスしやすくするのに役立ちます。

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

デフォルトでは、hue(そして、程度は低いですがsize)の意味がどのように扱われるかは、変数が「数値」データまたは「カテゴリ」データを表していると推測されるかどうかによって異なります。特に、数値変数はデフォルトで連続的なカラーマップで表され、凡例のエントリには、データに存在する可能性のある値を持つ規則的な「目盛り」が表示されます。この動作は、以下に示すように、さまざまなパラメータを通じて制御できます。

パラメータ:
datapandas.DataFramenumpy.ndarray、マッピング、またはシーケンス

入力データ構造。名前付き変数に割り当てることができるベクトルの長い形式のコレクション、または内部的にリシェイプされるワイド形式のデータセットのいずれか。

x, ydata内のベクトルまたはキー

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

huedata内のベクトルまたはキー

異なる色を持つ点を生成するグループ化変数。カテゴリまたは数値のいずれかですが、色のマッピングは後者の場合、異なる動作をします。

sizedata内のベクトルまたはキー

異なるサイズを持つ点を生成するグループ化変数。カテゴリまたは数値のいずれかですが、サイズのマッピングは後者の場合、異なる動作をします。

styledata内のベクトルまたはキー

異なるマーカーを持つ点を生成するグループ化変数。数値の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 の場合、凡例データは追加されず、凡例も描画されません。

axmatplotlib.axes.Axes

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

kwargsキー、値のマッピング

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

戻り値:
matplotlib.axes.Axes

プロットを含む matplotlib の軸。

参考

lineplot

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

stripplot

ジッターを使用したカテゴリ散布図をプロットします。

swarmplot

重複しない点を持つカテゴリ散布図をプロットします。

これらの例では、数値変数とカテゴリ変数の混合である「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

ロングフォームデータを渡し、xy を割り当てると、2 つの変数間の散布図が描画されます

sns.scatterplot(data=tips, x="total_bill", y="tip")
../_images/scatterplot_3_0.png

hue に変数を割り当てると、そのレベルがポイントの色にマッピングされます

sns.scatterplot(data=tips, x="total_bill", y="tip", hue="time")
../_images/scatterplot_5_0.png

同じ変数を style に割り当てると、マーカーも変化し、よりアクセスしやすいプロットが作成されます

sns.scatterplot(data=tips, x="total_bill", y="tip", hue="time", style="time")
../_images/scatterplot_7_0.png

huestyle を異なる変数に割り当てると、色とマーカーが独立して変化します

sns.scatterplot(data=tips, x="total_bill", y="tip", hue="day", style="time")
../_images/scatterplot_9_0.png

hue に割り当てられた変数が数値の場合、セマンティックマッピングは定量的になり、異なるデフォルトのパレットが使用されます

sns.scatterplot(data=tips, x="total_bill", y="tip", hue="size")
../_images/scatterplot_11_0.png

カテゴリパレットの名前、または明示的な色(Python のリストまたは辞書)を渡して、hue 変数のカテゴリマッピングを強制します

sns.scatterplot(data=tips, x="total_bill", y="tip", hue="size", palette="deep")
../_images/scatterplot_13_0.png

多数の一意な数値がある場合、凡例には代表的な均等間隔のセットが表示されます

tip_rate = tips.eval("tip / total_bill").rename("tip_rate")
sns.scatterplot(data=tips, x="total_bill", y="tip", hue=tip_rate)
../_images/scatterplot_15_0.png

数値変数を size に割り当てて、ポイントの領域にセマンティックマッピングを適用することもできます

sns.scatterplot(data=tips, x="total_bill", y="tip", hue="size", size="size")
../_images/scatterplot_17_0.png

sizes でマーカー領域の範囲を制御し、legend="full" を設定して、すべての一意な値を凡例に強制的に表示します

sns.scatterplot(
    data=tips, x="total_bill", y="tip", hue="size", size="size",
    sizes=(20, 200), legend="full"
)
../_images/scatterplot_19_0.png

値のタプルまたは 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"
)
../_images/scatterplot_21_0.png

Python のリストまたはマーカーコードの辞書を渡すことにより、style 変数をマッピングするために使用される特定のマーカーを制御します

markers = {"Lunch": "s", "Dinner": "X"}
sns.scatterplot(data=tips, x="total_bill", y="tip", style="time", markers=markers)
../_images/scatterplot_23_0.png

追加のキーワード引数は matplotlib.axes.Axes.scatter() に渡され、セマンティックにマッピングされていないプロットの属性を直接設定できます

sns.scatterplot(data=tips, x="total_bill", y="tip", s=100, color=".2", marker="+")
../_images/scatterplot_25_0.png

前の例では、ロングフォームのデータセットを使用しました。ワイドフォームのデータを操作する場合、各列は huestyle マッピングの両方を使用して、そのインデックスに対してプロットされます

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)
../_images/scatterplot_27_0.png

relplot() を使用して、scatterplot()FacetGrid を組み合わせます。これにより、追加のカテゴリ変数内でグループ化し、複数のサブプロットにまたがってプロットすることができます。

relplot() を使用する方が、FacetGrid を直接使用するよりも安全です。これは、ファセット間でセマンティックマッピングの同期を保証するためです。

sns.relplot(
    data=tips, x="total_bill", y="tip",
    col="time", hue="day", style="day",
    kind="scatter"
)
../_images/scatterplot_29_0.png