Python
 Computer >> コンピューター >  >> プログラミング >> Python

Seabornで同じグラフに2系列のバイオリンプロットを描く方法

データの分布を比較する際、バイオリンプロット(violin plot)は箱ひげ図よりも詳細な形状情報を視覚化できる便利な手法です。Seabornを使えば、hueパラメータを指定するだけで、同じグラフ上に2つのカテゴリ系列のバイオリンプロットを並べて描画できます。

ここでは、実際のコード例とともに、その手順をわかりやすく解説します。

実装の手順

  • 図のサイズを設定し、サブプロット間および周囲の余白を調整します。
  • オンラインリポジトリからサンプルデータセットを読み込みます(インターネット接続が必要です)。
  • violinplot() メソッドを使用してバイオリンプロットを作成します。このとき hue パラメータに分類用の列を指定すると、各カテゴリ内で2系列が並んで表示されます。
  • show() メソッドを使用して図を表示します。

サンプルコード

# SeabornとMatplotlibをインポート
import seaborn as sns
from matplotlib import pyplot as plt

# 図のサイズを設定
plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True

# サンプルデータセット「tips」を読み込む
tips = sns.load_dataset("tips")

# x軸に曜日、y軸に合計金額、hueに時間帯を指定してバイオリンプロットを作成
sns.violinplot(x="day", y="total_bill", hue="time", data=tips)

# プロットを表示
plt.show()

コードのポイント

  • x="day":横軸に曜日(木・金・土・日)を配置し、グループごとの分布を表示します。
  • y="total_bill":縦軸に支払総額を取り、各曜日の金額分布を表現します。
  • hue="time":「Lunch(昼食)」と「Dinner(夕食)」という2つの系列を色分けして同じグラフ上に並べて描画します。

出力結果

このコードを実行すると、曜日ごとに昼食と夕食の2系列が左右に並んだバイオリンプロットが表示されます。各バイオリンの幅はデータの密度を示しており、分布の山や裾の形状をひと目で把握できます。

Seabornで同じグラフに2系列のバイオリンプロットを描く方法

応用テクニック

sns.violinplot(..., split=True) を指定すると、2系列を1本のバイオリンの左右に分割して重ねて表示でき、分布の違いをより直接的に比較できます。また、palette パラメータで配色を変更したり、inner="quartile" で四分位点を表示したりすることも可能です。

  1. MatplotlibでSeabornプロットの凡例(レジェンド)のフォントサイズを大きくする方法

    Seabornプロットの凡例(レジェンド)のフォントサイズを大きくしたい場合は、fontsize変数を定義し、それをlegend()メソッドの引数として渡すことで実現できます。手順Pandasを使ってデータフレームを作成します。キーは「number」「count」「select」とします。Seabornのbarplot()メソッドを使って棒グラフを描画します。凡例のフォントサイズを大きくするための変数fontsizeを初期化します。legend()メソッドを使い、fontsizeを引数に指定して図上に凡例を配置します。図を表示するには、show()メソッドを使用します。サンプルコードimpor

  2. Seabornで2つのグラフを横に並べてプロットする方法(Matplotlib)

    データ分析では、複数のグラフを1つの図の中に並べて比較できると非常に便利です。この記事では、SeabornとMatplotlibを組み合わせて、2つのグラフを横並び(1行2列)で表示する方法を解説します。 実装の流れ 2つのグラフを並べて描画するには、以下の手順を実行します。 plt.subplots(1, 2) を使い、figureサイズ(7, 7)で1行2列のサブプロットを作成します。 Pandasを使って、col1 と col2 のキーを持つデータフレームを作成します。 countplot() メソッドを使用し、カテゴリごとの観測値の件数を棒グラフで可視化します。 subplots_a