Python

バイオリンプロット

データの分布を示すグラフであるバイオリンプロットについて解説します.

Pythonを用いた作り方も紹介しています.

バイオリンプロットとは

バイオリンプロットとは

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

バイオリンプロットはグラフの膨らみや長さよって,データの分布を以下のように把握することができます.

バイオリンプロットの見方

Aのグラフは縦に長い形状のため,BやCのグラフと比較してデータがばらついていることがわかります.Bのグラフでは600あたりで膨らんでおり,600付近にデータが多く分布していることがわかります.Cのグラフでは下半分が膨らんでおり,データに偏りがあることがわかります.

データの分布自体はヒストグラムでも表現することができますが,バイオリンプロットは複数のサンプルの分布を比較する際に便利なグラフになります.

バイオリンプロットはビジネスなど一般的な場で使われることは少ないですが近年の論文では,ヒストグラムや箱ひげ図よりも多く見かける気がします.

》ヒストグラムの見方・かき方
》箱ひげ図の見方・かき方

バイオリンプロットと箱ひげ図

バイオリンプロットと箱ひげ図はどちらもデータの分布を表すグラフで用途も似ています.以下の図は同じデータに対して作成した箱ひげ図とバイオリンプロットになります.

バイオリンプロットと箱ひげ図の違い

箱ひげ図の利点は,四分位値を図示するので中央値の位置などが明確にわかります.

バイオリンプロットは四分位値がどこに位置するかわかりませんが,特にCのグラフのようにデータが滑らかな山型に分布していない場合でも,分布の特徴を把握することができます.(箱ひげ図のCのグラフではばらつきが小さい分布としか読み取れません.)

バイオリンプロットの作り方

バイオリンプロットはカーネル密度推定が必要なため,手計算やExcelを用いて行うことは難しいです.一般的にはRやPython,有料統計解析ソフトを用いて作成されます.

本サイトでは下記Pythonを用いた方法に加えて,StaatAppを用いた作成方法を紹介しています.StaatAppとは任意のデータを数クリックするだけで統計解析ができるPC用アプリです.RやPythonと比較しても簡単かつすぐにグラフ作成を行うことができます.

》StaatAppで作成するバイオリンプロット
》統計解析アプリStaatAppとは

統計解析アプリStaatApp

グラフの選び方

統計解析においてグラフは様々な種類があります.分析対象のデータ・分析の目的に対して最適なグラフの選び方について,以下のページで解説しています.

》フローチャートで解説!グラフの選び方

参考文献と同じグラフが作成したい!けど,Excelでは難しい…

研究データを取りまとめて,論文執筆を行う際に以下の悩みはないでしょうか.

・参考文献と同じグラフを作成したいけど,Excelなどの表計算ソフトでは対応できない
・有料ソフト(SPSSなど)でも,参考文献と同じグラフを作成できない
・RやPythonで描画したいがプログラムの書き方がわからない

実際に既往研究と同じようなグラフを描画するためには,統計ソフトだけで対応することが難しく,RやPythonを用いたプログラミングが必要な場面が多々あります.

そこで本サイトでは,グラフ作成に関する代行,描画用プログラムの作成サービスを提供しております.本サービスではチャットで連絡を取りながらご希望のグラフを作成したり,お手元のデータで自由にグラフを描画できるプログラムの作成を行っています.

》グラフ作成サービス

Pythonを用いた作り方

PythonのSeabornライブラリを用いた,バイオリンプロットの作成方法を紹介します.

3つの会社で働く従業員の給料を表す,以下のようなサンプルデータを用います.

No.Corp.salary
1A520
2C350
3B660
63C400

サンプルコードは以下のようになります.

# ライブラリのインポート
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を用いた統計解析
》Python用CSVファイルの作り方