データの分布を示すグラフであるバイオリンプロットについて解説します.
Pythonを用いた作り方も紹介しています.
バイオリンプロットとは

バイオリンプロットとは,データの分布を表すグラフになります.ヒストグラムを滑らかにしたようなグラフで,データの分布によってはバイオリンのような形になるためバイオリンプロットと呼ばれます.
バイオリンプロットはグラフの膨らみや長さよって,データの分布を以下のように把握することができます.

Aのグラフは縦に長い形状のため,BやCのグラフと比較してデータがばらついていることがわかります.Bのグラフでは600あたりで膨らんでおり,600付近にデータが多く分布していることがわかります.Cのグラフでは下半分が膨らんでおり,データに偏りがあることがわかります.
データの分布自体はヒストグラムでも表現することができますが,バイオリンプロットは複数のサンプルの分布を比較する際に便利なグラフになります.
バイオリンプロットはビジネスなど一般的な場で使われることは少ないですが近年の論文では,ヒストグラムや箱ひげ図よりも多く見かける気がします.
バイオリンプロットと箱ひげ図
バイオリンプロットと箱ひげ図はどちらもデータの分布を表すグラフで用途も似ています.以下の図は同じデータに対して作成した箱ひげ図とバイオリンプロットになります.

箱ひげ図の利点は,四分位値を図示するので中央値の位置などが明確にわかります.
バイオリンプロットは四分位値がどこに位置するかわかりませんが,特にCのグラフのようにデータが滑らかな山型に分布していない場合でも,分布の特徴を把握することができます.(箱ひげ図のCのグラフではばらつきが小さい分布としか読み取れません.)
バイオリンプロットの作り方
バイオリンプロットはカーネル密度推定が必要なため,手計算やExcelを用いて行うことは難しいです.一般的にはRやPython,有料統計解析ソフトを用いて作成されます.
本サイトでは下記Pythonを用いた方法に加えて,StaatAppを用いた作成方法を紹介しています.StaatAppとは任意のデータを数クリックするだけで統計解析ができるPC用アプリです.RやPythonと比較しても簡単かつすぐにグラフ作成を行うことができます.
》StaatAppで作成するバイオリンプロット
》統計解析アプリStaatAppとは
Pythonを用いた作り方
PythonのSeabornライブラリを用いた,バイオリンプロットの作成方法を紹介します.
3つの会社で働く従業員の給料を表す,以下のようなサンプルデータを用います.
No. | Corp. | salary |
1 | A | 520 |
2 | C | 350 |
3 | B | 660 |
︙ | ︙ | ︙ |
63 | C | 400 |
サンプルコードは以下のようになります.
# ライブラリのインポート
import pandas as pd
import seaborn as sns
from matplotlib import pyplot as plt
# データの読み込み
df_workers = pd.read_csv("violinplot.csv")
# バイオリンプロットの作成
sns.violinplot(x=df_workers["Corp."], y=df_workers["salary"], inner=None)
# グラフの出力
plt.show()
実行すると以下のようなグラフが出力されます.

》Pythonを用いた統計解析
》Python用CSVファイルの作り方