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

Matplotlibで箱ひげ図に散布図(ジッタープロット)を重ねて表示する方法

Matplotlibを使って箱ひげ図に散布図を重ねて表示することで、データの分布だけでなく個々のデータポイントのばらつきも一目で把握できるようになります。実装には boxplot() メソッドを使用し、Pandasのデータフレームを列挙(enumerate)しながら散布図をプロットするためのx座標・y座標のデータポイントを取得します。

実装の手順

  • 図のサイズを設定し、figure.autolayout を有効にしてサブプロット間や周囲の余白を自動調整します。
  • Pandasの DataFrame クラスを使い、Box1Box2 の2つの列を持つデータフレームを作成します。
  • 作成したデータフレームから箱ひげ図を描画します。
  • 各列のデータをもとに、散布図用のx座標とy座標を算出します。
  • show() メソッドを呼び出して図を表示します。

コード例

import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
data = pd.DataFrame({"Box1": np.random.rand(10), "Box2": np.random.rand(10)})
data.boxplot()
for i, d in enumerate(data):
    y = data[d]
    x = np.random.normal(i + 1, 0.04, len(y))
    plt.scatter(x, y)
plt.show()

コードのポイント

この例では、np.random.normal(i + 1, 0.04, len(y)) を使ってx座標に微小なランダムな揺らぎ(ジッター)を加えています。これは「ジッタープロット」と呼ばれる手法で、同じ値を持つデータポイントが完全に重なって見えなくなるのを防ぎ、データの密度や分布をより正確に視覚化できます。標準偏差として指定している 0.04 の値を調整すれば、点の横方向への広がり具合を制御できます。

出力結果

Matplotlibで箱ひげ図に散布図(ジッタープロット)を重ねて表示する方法

実行すると、2つの箱ひげ図の上に個々のデータポイントが散布図として重ねて表示され、中央値や四分位範囲とともに実際のデータの分布状況を確認できます。

  1. Matplotlibで軸とグリッドを非表示にした3D散布図を作成する方法

    Matplotlibで3Dプロット上に散布図を描画する際、軸やグリッドを非表示にしたいケースは少なくありません。例えば、データポイントそのものの形状や分布だけを視覚的に強調したい場合などが該当します。このような場合は、scatter()メソッドで散布図を描画し、ax.axis(off)を使って軸をオフにすることで実現できます。 手順 figureサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。 figure()メソッドを使用して、新しい図を作成するか既存の図をアクティブにします。 add_subplot()メソッドにprojection=3dを指定して、3D用の軸を

  2. PythonでPandasのデータフレームを使ってmatplotlib散布図を作成する方法

    散布図は、2つの変数間の関係を視覚的に把握するのに非常に便利なグラフです。Pandasを使えばデータフレームを簡単に作成でき、さらにsubplots()メソッドで図(fig)と軸(ax)の変数を生成できます。その後、ax.scatter()メソッドを呼び出すことで、目的の散布図を描画することが可能です。 手順 生徒数のリストを作成します。 生徒が取得した点数のリストを作成します。 各散布点の色を表現するために、色のリストを用意します。 Pandasを使って、データフレームの軸となるデータをリストとして定義します。 subplots()メソッドでfig変数とax変数を作成します。デフォルトでは