Seaborn の FacetGrid
seaborn モジュールは、Python での視覚化と美しい統計グラフの作成に使用されます。これは、matlplotlib ライブラリに基づいており、使用しています。場合によっては、一度に複数のグラフを表示する状況が発生することがあります。これにより、データセットをより明確に理解できるようになります。このような状況では、seaborn モジュールの FacetGrid
クラスを使用できます。
このチュートリアルでは、Python で seaborn モジュールの FacetGrid
クラスを使用する方法を紹介します。
FacetGrid
クラスは、複数のプロットのグリッドを作成することにより、データ分布と他のデータサブセットとの関係を視覚化するために使用されます。行と列の軸を指定して、データセットをグリッドにプロットします。複雑なデータセットを扱う場合に便利です。
relplot()
、lmplot()
、catplot()
などのさまざまな Seaborn のプロットは、デフォルトでこのクラスを使用します。
seaborn.FacetGrid()
コンストラクターを使用して、このクラスのオブジェクトを開始します。次のコードを参照してください。
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
df = pd.DataFrame(
{
"Quantity": [5, 6, 7, 8, 5, 6, 7, 8, 5, 6, 7, 8, 5, 6, 7, 8],
"Price": [9, 10, 15, 16, 13, 14, 15, 18, 11, 12, 14, 15, 16, 17, 18, 19],
"Day": [1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2],
"Product": [
"A",
"A",
"A",
"A",
"B",
"B",
"B",
"B",
"A",
"A",
"A",
"A",
"B",
"B",
"B",
"B",
],
}
)
g = sns.FacetGrid(df, col="Product", row="Day")
g.map(sns.lineplot, "Price", "Quantity")
上記の例では、2 日間にわたって、さまざまな製品のさまざまな数量の価格をプロットしました。seaborn.FacetGrid()
コンストラクターを使用してグリッドを作成し、行と列の値で初期化しました。map()
関数を使用して、プロットするプロットと変数を指定します。比較的単純なデータセットを使用し、目的の結果を得ることができました。さらに、このクラスでは色相と呼ばれる 3 番目の軸を使用できます。これにより、異なるカテゴリのデータが同じグラフに異なる色でプロットされます。
前述の例のコードを変更し、hue
パラメーターを追加します。例えば、
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
df = pd.DataFrame(
{
"Quantity": [5, 6, 7, 8, 5, 6, 7, 8, 5, 6, 7, 8, 5, 6, 7, 8],
"Price": [9, 10, 15, 16, 13, 14, 15, 18, 11, 12, 14, 15, 16, 17, 18, 19],
"Day": [1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2],
"Product": [
"A",
"A",
"A",
"A",
"B",
"B",
"B",
"B",
"A",
"A",
"A",
"A",
"B",
"B",
"B",
"B",
],
}
)
g = sns.FacetGrid(df, col="Product", hue="Day")
g.map(sns.lineplot, "Price", "Quantity")
g.add_legend()
hue
パラメーターを使用すると、プロットの総数も減少することに注意してください。add_legend()
関数は、最終的な図に凡例を追加するために使用されます。
このクラスで多くのパラメーターと関数を使用して、最終的な図を微調整できます。たとえば、height
および aspect
パラメータを使用して最終的な図のサイズを変更したり、set_titles()
関数を使用して各軸にプロットするタイトルを追加したりできます。set_xlabels()
関数軸ラベルなどを変更します。
Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.
LinkedIn