seaborn.FacetGrid.__init__#

FacetGrid.__init__(data, *, row=None, col=None, hue=None, col_wrap=None, sharex=True, sharey=True, height=3, aspect=1, palette=None, row_order=None, col_order=None, hue_order=None, hue_kws=None, dropna=False, legend_out=True, despine=True, margin_titles=False, xlim=None, ylim=None, subplot_kws=None, gridspec_kws=None)#

matplotlibのfigureとFacetGridオブジェクトを初期化します。

このクラスは、データセットを、データセット内の変数の*レベル*に対応する行と列のグリッドに配置された複数の軸にマップします。生成されるプロットは、しばしば「格子型」、「トレリス型」、「スモールマルチプル」グラフィックと呼ばれます。

hueパラメータを使用して、データの異なるサブセットを異なる色でプロットすることで、第3の変数のレベルを表すこともできます。これは、色を使用して3次元上の要素を解決しますが、サブセットを重ねて描画するだけであり、hueパラメータをhueを受け入れる軸レベルの関数のように特定の視覚化に合わせて調整することはしません。

FacetGridオブジェクトをデータセットとグリッドの構造に使用される変数で初期化することから始めます。次に、FacetGrid.map()またはFacetGrid.map_dataframe()を呼び出すことで、1つ以上のプロット関数を各サブセットに適用できます。最後に、軸ラベルの変更、異なるティックの使用、凡例の追加などを行うために、他のメソッドを使用してプロットを調整できます。詳細については、以下の詳細なコード例を参照してください。

警告

データセットからセマンティックマッピングを推論するseaborn関数を用いる場合、これらのマッピングをファセット間で同期させることに注意する必要があります(例:hueマッピングをパレット辞書で定義するか、変数のデータ型をcategoryに設定する)。ほとんどの場合、FacetGridを直接使用することよりも、figureレベルの関数(例:relplot()またはcatplot())を使用する方が良いでしょう。

チュートリアルで詳細情報をご覧ください。

パラメータ:
dataDataFrame

各列が変数で、各行が観測値である、整然とした(「ロングフォーム」)データフレーム。

row, col, hue文字列

データのサブセットを定義する変数。グリッド内の個別のファセットに描画されます。{var}_orderパラメータを参照して、この変数のレベルの順序を制御します。

col_wrap整数

列変数をこの幅で「折り返す」ため、列ファセットが複数の行にまたがります。rowファセットとは互換性がありません。

share{x,y}bool、'col'、または'row'(オプション)

Trueの場合、ファセットは列全体でy軸を、行全体でx軸を共有します。

heightスカラー

各ファセットの高さ(インチ)。aspectも参照してください。

aspectスカラー

各ファセットのアスペクト比。 aspect * heightにより、各ファセットの幅(インチ)が得られます。

paletteパレット名、リスト、または辞書

異なるレベルのhue変数に対して使用する色。 color_palette()で解釈できるもの、または色相レベルをmatplotlibの色にマッピングする辞書である必要があります。

{row,col,hue}_orderリスト

ファセット変数のレベルの順序。デフォルトでは、dataに出現するレベルの順序、または変数がpandasのカテゴリ変数の場合はカテゴリの順序になります。

hue_kwsparam → 値のリストのマッピング辞書

プロット呼び出しに挿入するその他のキーワード引数。これにより、他のプロット属性を色相変数のレベル間で変化させることができます(例:散布図のマーカー)。

legend_out論理値

Trueの場合、図のサイズが拡張され、凡例がプロットの外側(中央右)に描画されます。

despine論理値

プロットの上部と右側のスパインを削除します。

margin_titles論理値

Trueの場合、行変数のタイトルは最後の列の右側に描画されます。このオプションは実験的なものであり、すべての場合に機能するとは限りません。

{x, y}lim: タプル

各ファセットの各軸の制限(share{x, y}がTrueの場合のみ関連します)。

subplot_kws辞書

matplotlib subplot(s)メソッドに渡されるキーワード引数の辞書。

gridspec_kws辞書

matplotlib.gridspec.GridSpecmatplotlib.figure.Figure.subplots()経由)に渡されるキーワード引数の辞書。col_wrapNoneでない場合は無視されます。

参照

PairGrid

ペアワイズの関係をプロットするためのサブプロットグリッド

relplot

関係プロットとFacetGridを組み合わせる

displot

分布プロットとFacetGridを組み合わせる

catplot

カテゴリプロットとFacetGridを組み合わせる

lmplot

回帰プロットとFacetGridを組み合わせる

注記

これらの例では、seaborn関数を用いてクラスの高度な機能の一部を示していますが、ほとんどの場合、図レベル関数(例:displot()relplot())を使用してここに示されているプロットを作成することをお勧めします。

コンストラクタを呼び出すには、ロングフォームのデータオブジェクトが必要です。これによりグリッドが初期化されますが、何もプロットされません。

tips = sns.load_dataset("tips")
sns.FacetGrid(tips)
../_images/FacetGrid_1_0.png

列変数や行変数を割り当てて、図にサブプロットを追加します。

sns.FacetGrid(tips, col="time", row="sex")
../_images/FacetGrid_3_0.png

すべてのファセットにプロットを描画するには、関数とデータフレーム内の1つ以上の列の名前をFacetGrid.map()に渡します。

g = sns.FacetGrid(tips, col="time",  row="sex")
g.map(sns.scatterplot, "total_bill", "tip")
../_images/FacetGrid_5_0.png

FacetGrid.map()での変数の指定には位置引数マッピングが必要ですが、関数がdataパラメータを持ち、名前付き変数割り当てを受け入れる場合は、FacetGrid.map_dataframe()も使用できます。

g = sns.FacetGrid(tips, col="time",  row="sex")
g.map_dataframe(sns.histplot, x="total_bill")
../_images/FacetGrid_7_0.png

各ファセットでビンの幅が異なることに注目してください。各ファセットに個別のプロットが描画されるため、プロット関数がデータからパラメータを導出する場合、ファセット間で共有されない可能性があります。それらを同期するには、追加のキーワード引数を渡すことができます。ただし、可能であれば、displot()のような図レベル関数を使用すると、この帳簿管理が処理されます。

g = sns.FacetGrid(tips, col="time", row="sex")
g.map_dataframe(sns.histplot, x="total_bill", binwidth=2, binrange=(0, 60))
../_images/FacetGrid_9_0.png

FacetGridコンストラクタはhueパラメータを受け入れます。これを設定すると、別の変数に基づいてデータが条件付けされ、異なる色の複数のプロットが作成されます。可能な限り、ラベル情報は追跡され、単一の凡例を描画できます。

g = sns.FacetGrid(tips, col="time", hue="sex")
g.map_dataframe(sns.scatterplot, x="total_bill", y="tip")
g.add_legend()
../_images/FacetGrid_11_0.png

FacetGridhueが設定されている場合、変数の各レベルに対して個別のプロットが描画されます。プロット関数がhueを理解する場合は、そのロジックを処理させる方が良いでしょう。しかし、各ファセットが同じ色相マッピングを使用することを確認することが重要です。サンプルのtipsデータでは、sex列にはカテゴリデータ型があり、これが保証されます。それ以外の場合は、hue_orderなどのパラメータを使用することをお勧めします。

g = sns.FacetGrid(tips, col="time")
g.map_dataframe(sns.scatterplot, x="total_bill", y="tip", hue="sex")
g.add_legend()
../_images/FacetGrid_13_0.png

プロットのサイズと形状は、heightaspectパラメータを使用して、各サブプロットのレベルで指定されます。

g = sns.FacetGrid(tips, col="day", height=3.5, aspect=.65)
g.map(sns.histplot, "total_bill")
../_images/FacetGrid_15_0.png

colに割り当てられた変数に多くのレベルがある場合、「ラップ」して複数の行にまたがるようにすることができます。

g = sns.FacetGrid(tips, col="size", height=2.5, col_wrap=3)
g.map(sns.histplot, "total_bill")
../_images/FacetGrid_17_0.png

すべてのファセットに水平または垂直の参照線を追加するには、FacetGrid.refline()を使用します。

g = sns.FacetGrid(tips, col="time", margin_titles=True)
g.map_dataframe(sns.scatterplot, x="total_bill", y="tip")
g.refline(y=tips["tip"].median())
../_images/FacetGrid_19_0.png

プロットしたり、各ファセットに注釈を付けたりするために、カスタム関数を渡すことができます。カスタム関数は、matplotlibの状態マシンインターフェースを使用して「現在の」軸にプロットする必要があり、追加のキーワード引数をキャッチする必要があります。

import matplotlib.pyplot as plt
def annotate(data, **kws):
    n = len(data)
    ax = plt.gca()
    ax.text(.1, .6, f"N = {n}", transform=ax.transAxes)

g = sns.FacetGrid(tips, col="time")
g.map_dataframe(sns.scatterplot, x="total_bill", y="tip")
g.map_dataframe(annotate)
../_images/FacetGrid_21_0.png

FacetGridオブジェクトには、プロットを調整するためのその他の便利なパラメータとメソッドがあります。

g = sns.FacetGrid(tips, col="sex", row="time", margin_titles=True)
g.map_dataframe(sns.scatterplot, x="total_bill", y="tip")
g.set_axis_labels("Total bill ($)", "Tip ($)")
g.set_titles(col_template="{col_name} patrons", row_template="{row_name}")
g.set(xlim=(0, 60), ylim=(0, 12), xticks=[10, 30, 50], yticks=[2, 6, 10])
g.tight_layout()
g.savefig("facet_plot.png")
../_images/FacetGrid_23_0.png

さらに調整するために、基礎となるmatplotlibオブジェクトにもアクセスできます。

g = sns.FacetGrid(tips, col="sex", row="time", margin_titles=True, despine=False)
g.map_dataframe(sns.scatterplot, x="total_bill", y="tip")
g.figure.subplots_adjust(wspace=0, hspace=0)
for (row_val, col_val), ax in g.axes_dict.items():
    if row_val == "Lunch" and col_val == "Female":
        ax.set_facecolor(".95")
    else:
        ax.set_facecolor((0, 0, 0, 0))
../_images/FacetGrid_25_0.png