seaborn.kdeplot#
- seaborn.kdeplot(data=None, *, x=None, y=None, hue=None, weights=None, palette=None, hue_order=None, hue_norm=None, color=None, fill=None, multiple='layer', common_norm=True, common_grid=False, cumulative=False, bw_method='scott', bw_adjust=1, warn_singular=True, log_scale=None, levels=10, thresh=0.05, gridsize=200, cut=3, clip=None, legend=True, cbar=False, cbar_ax=None, cbar_kws=None, ax=None, **kwargs)#
カーネル密度推定を用いて、一変量または二変量の分布をプロットします。
カーネル密度推定(KDE)プロットは、ヒストグラムと同様に、データセット内の観測値の分布を視覚化するための方法です。KDEは、1つ以上の次元で連続的な確率密度曲線を使用してデータを表現します。
このアプローチの詳細については、ユーザーガイドを参照してください。
ヒストグラムと比較して、KDEは特に複数の分布を描画する場合、よりすっきりとして解釈しやすいプロットを生成できます。ただし、基になる分布が境界付きであるか滑らかでない場合、歪みを導入する可能性があります。ヒストグラムと同様に、表現の品質は適切な平滑化パラメーターの選択にも依存します。
- パラメーター:
- data
pandas.DataFrame
、numpy.ndarray
、マッピング、またはシーケンス 入力データ構造。名前付き変数に割り当てることができるベクトルのロングフォームコレクション、または内部的に形状変更されるワイドフォームデータセットのいずれか。
- x、y
data
内のベクトルまたはキー x軸とy軸上の位置を指定する変数。
- hue
data
内のベクトルまたはキー プロット要素の色を決定するためにマッピングされるセマンティック変数。
- weights
data
内のベクトルまたはキー 指定した場合、これらの値を使用してカーネル密度推定に重み付けを行います。
- palette文字列、リスト、辞書、または
matplotlib.colors.Colormap
hue
セマンティックをマッピングするときに使用する色を選択するためのメソッド。文字列値はcolor_palette()
に渡されます。リストまたは辞書の値はカテゴリカルマッピングを意味し、カラーマップオブジェクトは数値マッピングを意味します。- hue_order文字列のベクトル
hue
セマンティックのカテゴリレベルの処理とプロットの順序を指定します。- hue_normタプルまたは
matplotlib.colors.Normalize
データ単位で正規化範囲を設定する値のペア、またはデータ単位から[0、1]間隔にマッピングするオブジェクトのいずれか。使用は数値マッピングを意味します。
- color
matplotlib color
hueマッピングが使用されていない場合の単一色指定。それ以外の場合、プロットはmatplotlibのプロパティサイクルにフックしようとします。
- fillboolまたはNone
Trueの場合、一変量密度曲線の下の領域、または二変量等高線の間の領域を塗りつぶします。Noneの場合、デフォルトは
multiple
に依存します。- multiple{{“layer”, “stack”, “fill”}}
セマンティックマッピングがサブセットを作成するときに、複数の要素を描画する方法。一変量データでのみ関連します。
- common_normbool
Trueの場合、すべての密度の下の合計面積が1になるように、各条件付き密度を観測数でスケーリングします。それ以外の場合は、各密度を個別に正規化します。
- common_gridbool
Trueの場合、各カーネル密度推定に同じ評価グリッドを使用します。一変量データでのみ関連します。
- cumulativebool、オプション
Trueの場合、累積分布関数を推定します。scipyが必要です。
- bw_method文字列、スカラー、または呼び出し可能オブジェクト(任意)
使用する平滑化帯域幅を決定する方法。
scipy.stats.gaussian_kde
に渡されます。- bw_adjust数値(任意)
bw_method
を使用して選択された値を乗算的にスケーリングする係数。大きくすると、曲線がより滑らかになります。注釈を参照してください。- warn_singularbool
Trueの場合、分散がゼロのデータの密度を推定しようとすると警告を発行します。
- log_scaleboolまたは数値、またはboolまたは数値のペア
軸のスケールを対数に設定します。単一の値は、プロット内の数値軸のデータ軸を設定します。値のペアは、各軸を独立して設定します。数値は、必要な底(デフォルトは10)として解釈されます。
None
またはFalse
の場合、seabornは既存のAxesスケールに従います。- levels整数またはベクトル
描画する等高線の数または値。ベクトルの引数は、[0, 1]で増加する値である必要があります。レベルは密度の等しい割合に対応します。たとえば、確率質量の20%は、0.2で描画された等高線の下に位置します。二変量データでのみ関連します。
- thresh[0, 1]の数値
等高線を描画する最小の等割合レベル。
levels
がベクトルの場合は無視されます。二変量データでのみ関連します。- gridsize整数
評価グリッドの各次元のポイント数。
- cut数値(任意)
平滑化帯域幅を乗算した係数で、評価グリッドが極端なデータポイントをどれだけ超えて拡張するかを決定します。0に設定すると、データ制限で曲線が切り捨てられます。
- clip数値のペアまたはNone、またはそのようなペアのペア
これらの制限外で密度を評価しないでください。
- legendbool
Falseの場合、セマンティック変数の凡例を抑制します。
- cbarbool
Trueの場合、二変量プロットでカラーマッピングを注釈するカラーバーを追加します。注意:現在、
hue
変数を含むプロットはうまくサポートされていません。- cbar_ax
matplotlib.axes.Axes
カラーバーの既存の軸。
- cbar_kws辞書
matplotlib.figure.Figure.colorbar()
に渡される追加のパラメーター。- ax
matplotlib.axes.Axes
プロットの既存の軸。それ以外の場合は、内部的に
matplotlib.pyplot.gca()
を呼び出します。- kwargs
その他のキーワード引数は、次のmatplotlib関数のいずれかに渡されます。
matplotlib.axes.Axes.plot()
(一変量、fill=False
)、matplotlib.axes.Axes.fill_between()
(一変量、fill=True
)、matplotlib.axes.Axes.contour()
(二変量、fill=False
)、matplotlib.axes.contourf()
(二変量、fill=True
)。
- data
- 戻り値:
matplotlib.axes.Axes
プロットを含むmatplotlib軸。
参考
displot
分布プロット関数への図レベルのインターフェース。
histplot
オプションの正規化または平滑化を使用した、ビン化されたカウントのヒストグラムをプロットします。
ecdfplot
経験累積分布関数をプロットします。
jointplot
一変量の周辺分布を持つ二変量プロットを描画します。
violinplot
カーネル密度推定を使用して強化された箱ひげ図を描画します。
注釈
帯域幅、または平滑化カーネルの標準偏差は、重要なパラメータです。帯域幅の指定ミスは、データの歪んだ表現を生成する可能性があります。ヒストグラムのビン幅の選択と同様に、過度に平滑化された曲線は分布の真の特徴を消去する可能性があり、平滑化不足の曲線はランダムな変動から偽の特徴を作成する可能性があります。デフォルトの帯域幅を設定する経験則は、真の分布が滑らかで、単峰性で、ほぼ釣鐘型の場合に最適に機能します。
bw_adjust
を使用して平滑化の量を増減することで、デフォルトの動作をチェックすることをお勧めします。平滑化アルゴリズムはガウスカーネルを使用しているため、推定された密度曲線は、特定のデータセットにとって意味をなさない値まで拡張できます。たとえば、曲線は、自然に正のデータを平滑化するときに、負の値の上に描画される場合があります。
cut
およびclip
パラメーターを使用して曲線の範囲を制御できますが、自然な境界に近い観測値が多いデータセットは、別の視覚化方法の方が適している場合があります。データセットが自然に離散的であるか、「スパイク状」(同じ値の繰り返し観測が多い)である場合にも同様の考慮事項が適用されます。カーネル密度推定は常に滑らかな曲線を生成しますが、これはこれらの状況では誤解を招く可能性があります。
密度軸の単位は、混乱の一般的な原因です。カーネル密度推定は確率分布を生成しますが、各点での曲線の高さは、確率ではなく密度を示します。確率は、範囲全体の密度を積分することによってのみ取得できます。曲線は、可能なすべての値の積分が1になるように正規化されます。つまり、密度軸のスケールはデータ値に依存します。
例
x軸に沿って一変量分布をプロットします
tips = sns.load_dataset("tips") sns.kdeplot(data=tips, x="total_bill")
データ変数をy軸に割り当てることで、プロットを反転します
sns.kdeplot(data=tips, y="total_bill")
ワイド形式のデータセットの各列の分布をプロットします
iris = sns.load_dataset("iris") sns.kdeplot(data=iris)
平滑化を少なくします
sns.kdeplot(data=tips, x="total_bill", bw_adjust=.2)
平滑化を増やしますが、極端なデータポイントを超えて平滑化しないでください
ax= sns.kdeplot(data=tips, x="total_bill", bw_adjust=5, cut=0)
2番目の変数の色分けマッピングを使用して、条件付き分布をプロットします
sns.kdeplot(data=tips, x="total_bill", hue="time")
条件付き分布を「スタック」します
sns.kdeplot(data=tips, x="total_bill", hue="time", multiple="stack")
グリッドの各値でスタックされた分布を正規化します
sns.kdeplot(data=tips, x="total_bill", hue="time", multiple="fill")
累積分布関数を推定し、各サブセットを正規化します
sns.kdeplot( data=tips, x="total_bill", hue="time", cumulative=True, common_norm=False, common_grid=True, )
重みを使用して、集計データから分布を推定します
tips_agg = (tips .groupby("size") .agg(total_bill=("total_bill", "mean"), n=("total_bill", "count")) ) sns.kdeplot(data=tips_agg, x="total_bill", weights="n")
対数スケールでデータ変数をマップします
diamonds = sns.load_dataset("diamonds") sns.kdeplot(data=diamonds, x="price", log_scale=True)
数値の色分けマッピングを使用します
sns.kdeplot(data=tips, x="total_bill", hue="size")
プロットの外観を変更します
sns.kdeplot( data=tips, x="total_bill", hue="size", fill=True, common_norm=False, palette="crest", alpha=.5, linewidth=0, )
二変量分布をプロットします
geyser = sns.load_dataset("geyser") sns.kdeplot(data=geyser, x="waiting", y="duration")
条件付き分布を示すために、色セマンティックで3番目の変数をマップします
sns.kdeplot(data=geyser, x="waiting", y="duration", hue="kind")
塗りつぶされた等高線を表示します
sns.kdeplot( data=geyser, x="waiting", y="duration", hue="kind", fill=True, )
分布のカバレッジが少ない、等高線レベルを少なく表示します
sns.kdeplot( data=geyser, x="waiting", y="duration", hue="kind", levels=5, thresh=.2, )
別のカラーマップを使用して、軸範囲を滑らかな分布で塗りつぶします
sns.kdeplot( data=geyser, x="waiting", y="duration", fill=True, thresh=0, levels=100, cmap="mako", )