Seaborn を使用したバイオリン図
violinplot()
関数はそのようなグラフを作成し、カーネル密度グラフと箱ひげ図の組み合わせのように分布を示します。これは、カテゴリデータの分布を理解するために分析および統計学者によって頻繁に使用されます。従来の箱ひげ図に対するその主な利点は、複数のピークを持つ分布にも使用できることです。
プロットのバイオリンの図は少し理解しにくいかもしれませんが、異なる統計値を表すことができます。次の図でこれを説明します。
DataFrames とは別に、violinplot()
関数は、単一の系列オブジェクト、numpy 配列、またはリストベクトルで機能します。
次の例では、単一の変数のバイオリン図の分布をプロットします。
import random
import numpy as np
n = random.sample(range(0, 50), 30)
arr = np.array(n)
sns.violinplot(n)
サンプルサイズは、バイオリン図の最終的な数値に大きな影響を与えることに注意してください。サンプルサイズが小さい場合、プロットは誤解を招く可能性があります。それでも少し混乱する場合は、バイオリン図の上に単純な散布図をプロットして、理解を深めることができます。
例えば、
import random
import numpy as np
n = random.sample(range(0, 50), 30)
arr = np.array(n)
sns.violinplot(n)
sns.stripplot(n, color="red")
ここでの stripplot()
関数は、バイオリン図の上に散布図をプロットします。同様に、バイオリン図の上に箱ひげ図をプロットして、両方の類似点と相違点を理解することもできます。
violinplot()
の主な用途はデータセットであり、複数のカテゴリのデータの分布を示します。以下のコードでは、これを実装します。
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.violinplot(data=df, y="Price", x="Quantity", hue="Product")
2つの異なる製品の価格の分布を 2 日間で異なる数量で効率的にプロットできたことに注目してください。hue
パラメーターを使用して、異なる色で 2つの製品をプロットしていることに注意してください。
他の多くの引数を使用して、最終的な図を微調整および変更できます。split
パラメータを使用して、カテゴリを簡単に比較できます。それらの順序は、order
パラメーターを使用して管理できます。各観測値は、inner
パラメーターを使用してプロット内に表示できます。
以下のコードでは、これらの引数のいくつかを使用しようとしています。
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.violinplot(
data=df, y="Price", x="Quantity", hue="Product", inner="stick", split=True
)
violinplot()
関数は、matplotlib axis-type オブジェクトを返し、そのようなすべての matplotlib 関数を使用して最終的な図をカスタマイズします。FacetGrid
タイプのオブジェクトを返したい場合は、catplot()
関数を使用して、kind
パラメーターを violin
として指定できます。
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