Seaborn Swarmplot
散布図は、使用される最も基本的で有用なグラフの 1つです。Python の seaborn モジュールは、このようなグラフをさらに一歩進めて、カテゴリ値を表すために使用できます。
スウォームプロットは、カテゴリ値を表すために使用される散布図の一種です。ストリッププロットと非常に似ていますが、ポイントのオーバーラップを回避します。seaborn.swarmplot()
を使用して、このようなグラフを作成できます。
サンプルサイズが大きい場合、このタイプのグラフを使用することはお勧めできません。
次のコードでは、swarmplot()
関数を使用して、カテゴリ値のグラフを作成します。
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",
],
}
)
sns.swarmplot(data=df, y="Price", x="Quantity")
上記の例では、hue
パラメーターを swarmplot()
関数に追加し、2つの異なる製品のカテゴリーを分離することができます。dodge
引数を使用して 2つの製品を分割し、True に設定できます。
さらに、swarmplot()
関数でも他の引数を使用できます。ポイントのサイズと色は、size
と color
引数を使用して変更できます。palette
パラメータを使用して、さまざまなカテゴリに使用される色の組み合わせを変更できます。linewidth
引数は、指定された幅のポイントに境界線を追加します。プロットされるカテゴリーの順序は、order
パラメーターを使用して制御できます。
次の例では、上記の引数を利用しようとします。
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",
],
}
)
sns.swarmplot(
data=df,
y="Price",
x="Quantity",
hue="Product",
dodge=True,
linewidth=2.5,
palette="Set2",
size=10,
)
swarmplot()
は、ボックスやバイオリン図の良い褒め言葉としても使用できます。それはデータの分布についての良い考えを与えます。
次のコードを使用して、群れプロットの上に箱ひげ図を追加できます。
import random
import numpy as np
import seaborn as sns
n = random.sample(range(0, 50), 30)
arr = np.array(n)
sns.boxplot(n)
sns.swarmplot(n, color="red")
catplot()
関数は、そのような群れプロットを作成することもできます。このために、catplot()
関数の kind
パラメーターの値を swarm
として指定する必要があります。
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