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

MatplotlibでSwarm Plot(スウォームプロット)を作成する方法

Swarm Plotとは

Swarm Plot(スウォームプロット)は、個々のデータポイントを互いに重ならないように配置することで、データの分布を直感的に可視化できるグラフです。Matplotlib単体では直接作成できませんが、Seabornライブラリと組み合わせることで簡単に描画できます。さらに箱ひげ図(Box Plot)を重ね合わせると、分布の形状と統計量を同時に確認でき、より情報量の多いグラフになります。

作成の手順

MatplotlibとSeabornを使ってSwarm Plotを作成するには、以下の手順に従います。

  • 図のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。
  • Pandasのデータフレーム(2次元のサイズ可変な表形式データ)を作成します。
  • Seabornのswarmplot()メソッドでスウォームプロットを初期化します。
  • 箱ひげ図を重ねて描画する場合は、boxplot()メソッドを使用します。
  • show()メソッドで図を表示します。

サンプルコード

import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

data = pd.DataFrame({"Box1": np.arange(10),
                     "Box2": np.arange(10)})

ax = sns.swarmplot(x="Box1", y="Box2", data=data, zorder=0)

sns.boxplot(x="Box1", y="Box2", data=data,
            showcaps=False, boxprops={'facecolor': 'None'},
            showfliers=False, whiskerprops={'linewidth': 0}, ax=ax)

plt.show()

コードのポイント

  • zorder=0 を指定することで、スウォームプロットが箱ひげ図の背面に描画されます。
  • facecolor='None' により箱の中身を透明にし、背後のデータポイントが見えるようにしています。
  • showfliers=False で外れ値の表示をオフにし、whiskerprops={'linewidth': 0} でひげ線を非表示にして、すっきりした見た目にしています。

出力結果

上記のコードを実行すると、データポイントが横方向に散らばって配置されたスウォームプロットが表示され、その上に透明な箱ひげ図が重ねて描画されます。これにより、各データポイントの位置と全体の分布(中央値や四分位範囲)をひとつのグラフで確認できます。

  1. Matplotlibで3D連続線をプロットする方法

    Matplotlibを使って3次元空間に連続的な線(3Dライン)を描画する方法を解説します。基本的な手順は以下の通りです。3Dプロットの手順図のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。NumPyを使用して x と y のデータポイントを作成します。xとyのデータポイントから z のデータポイントを計算して作成します。figure() メソッドを使って、新しい図を作成するか既存の図をアクティブにします。add_subplot() メソッドに3D投影(projection=3d)を指定して、Axesを追加します。plot() メソッドを使って、x、y、zのデータポ

  2. Matplotlibで任意のデータを使って4Dプロットを作成する方法

    Matplotlibでは、x・y・z の3つの座標データに加え、c(色) を第4の次元として割り当てることで、いわゆる「4Dプロット」を実現できます。これは実際には3D散布図にカラーマップを組み合わせたものであり、点の位置が3次元情報を、色がもう1つの変数を表現します。以下の手順に従うことで、標準正規分布に従うランダムなデータポイントを使った4Dプロットを簡単に作成できます。手順figure() メソッドを使用して、新しい図を作成するか、既存の図をアクティブ化します。サブプロット構成の一部として、3D投影(projection=3d)を指定した Axes を追加します。NumPy を使って x