【Python】Seabornのfactorplot関数でバイオリン図を可視化する方法
データ分析において、カテゴリ変数と連続変数の関係を視覚的に把握することは非常に重要です。Pythonの可視化ライブラリ「Seaborn」には、カテゴリカルデータを見やすく可視化するための機能が多数用意されています。本記事では、factorplot関数を使ってバイオリン図(バイオリンプロット)を描く方法を解説します。
barplot(棒グラフ)とpointplot(点グラフ)との違い
barplot関数は、カテゴリ変数と連続変数の関係を表現するための関数です。データは長方形のバーとして描画され、バーの長さがそのカテゴリにおけるデータの推定値(割合)を示します。
一方、pointplotも棒グラフと似た役割を持ちますが、塗りつぶしたバーの代わりに、データポイントの推定値をもう一方の軸上の特定の高さにある「点」として表現する点が異なります。
factorplot関数とは
カテゴリカルデータは、カテゴリ散布図やpointplotなどを用いた複数種類のプロットで可視化できます。これらを統一的に扱える高レベルな関数が「factorplot」です。
factorplot関数は、FacetGrid上にカテゴリプロットを描画する関数で、「kind」パラメータによってプロットの種類を切り替えられます。デフォルトではpointplotが使用されますが、バイオリン図を描きたい場合は「kind」に「violin」を指定します。
コード例:factorplotでバイオリン図を作成する
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
my_df = sb.load_dataset('exercise')
sb.factorplot(x = "time", y = "pulse", hue = "kind", kind = 'violin', data = my_df)
plt.show()
出力結果

コードの解説
- まず、必要なパッケージ(pandas、seaborn、matplotlib)をインポートします。
- 入力データには、seabornライブラリに収録されている「exercise」データセットを使用します。
- load_dataset関数でこのデータセットを読み込み、データフレーム(my_df)に格納します。
- factorplot関数にデータフレームをdata引数として渡し、データを可視化します。
- x軸に「time」(時間)、y軸に「pulse」(脈拍)を指定し、hueに「kind」(運動の種類)を設定することでカテゴリごとに色分けされます。
- kindパラメータに「violin」を指定しているため、データの分布形状がバイオリン図として描画されます。
- 最後にplt.show()を実行すると、グラフが画面に表示されます。
補足:最新版ではcatplotの使用を推奨
なお、factorplotはSeaborn 0.9.0以降で非推奨(deprecated)となり、現在は後継関数である「catplot」の使用が推奨されています。引数の指定方法はほぼ共通しており、sb.catplot(x="time", y="pulse", hue="kind", kind='violin', data=my_df)のように書き換えるだけで同じバイオリン図を描けます。新規にコードを書く場合はcatplotを使うとよいでしょう。
-
PythonのSeabornライブラリでバイオリンプロットを左右に分割して表示する方法
Seabornとは Seabornは、Pythonでデータ可視化を行うためのライブラリです。Matplotlibをベースとしており、洗練されたテーマと高水準のインターフェースが用意されているため、少ないコード量で見栄えの良いグラフを作成できます。 バイオリンプロットとは バイオリンプロット(Violin Plot)は、箱ひげ図(ボックスプロット)とカーネル密度推定(KDE)を組み合わせたグラフです。データがどのように分布しているのかを、箱ひげ図よりも直感的に読み取れるのが大きな特徴です。 幅が広い部分: データの密度が高い(多くのデータが集中している) 幅が狭い部分: データの密度が低い
-
Pythonの「seaborn」ライブラリを使用してデータを視覚的に表現するにはどうすればよいですか?
機械学習とデータ可視化の関係機械学習とは、データからモデルを構築し、まだ見たことのないデータに対しても汎化できるようにすることを目的とした技術です。機械学習モデルに入力するデータは、システムが正しく理解できる形である必要があります。それによって、モデルはデータを適切に解釈し、精度の高い結果を生成できるようになります。Seabornとは何かSeabornは、データの可視化を支援するPythonライブラリです。あらかじめカスタマイズされた美しいテーマと高水準インターフェースを備えており、このインターフェースを活用することで、扱うデータの種類や、フィルタを適用した際の挙動を柔軟にカスタマイズ・制御す