Matplotlibでラグプロット(Rug Plot)を作成する方法
ラグプロット(Rug Plot)は、データの分布を視覚的に把握するための手法の一つです。単一変数のデータを、軸に沿って短いマーク(目盛りのような線)として表示することで、データがどの位置に集中しているのかを直感的に確認できます。
この記事では、MatplotlibとSciPyを組み合わせて、ラグプロットにカーネル密度推定(KDE)の曲線を重ねて描画する方法を、具体的な手順とサンプルコード付きで解説します。
ラグプロット作成の手順
- figure()メソッドで図のサイズを設定し、rcParamsを使ってサブプロット間の余白を自動調整します。
- NumPyを使ってx方向のデータポイントを作成します。
- ガウシアンカーネルによるカーネル密度推定(KDE)の表現をkde1とkde2として追加します。
- figure()メソッドで新しい図を作成、または既存の図をアクティブ化します。
- サブプロット配置の一部として、図に「ax1」を追加します。
- マーカーサイズを20に設定してラグプロットを描画します。
- plot()メソッドを使い、x_eval、kde1(x_eval)、kde2(x_eval)のデータポイントをプロットします。
- legend()メソッドで凡例をグラフ上に配置します。
- show()メソッドで図を表示します。
サンプルコード
import numpy as np from scipy import stats import matplotlib.pyplot as plt plt.rcParams["figure.figsize"] = [7.00, 3.50] plt.rcParams["figure.autolayout"] = True x = np.array([-6, -4, 2, 1, 4], dtype=float) kde1 = stats.gaussian_kde(x) kde2 = stats.gaussian_kde(x, bw_method='silverman') fig = plt.figure() ax = fig.add_subplot(111) ax.plot(x, np.zeros(x.shape), 'b+', ms=20) x_eval = np.linspace(-5, 5, num=10) ax.plot(x_eval, kde1(x_eval), 'k-', label="Scott's Rule") ax.plot(x_eval, kde2(x_eval), 'r-', label="Silverman's Rule") plt.legend(loc='upper right') plt.show()
コードのポイント
このコードでは、scipy.stats.gaussian_kdeを使って2種類の帯域幅推定法を比較しています。デフォルトではスコットの法則(Scott's Rule)が適用され、bw_method='silverman'を指定するとシルバーマンの法則(Silverman's Rule)が使われます。青色の「+」マークがラグプロット本体であり、実際のデータポイントの位置を示しています。その上に黒と赤のKDE曲線を重ねることで、データ分布の滑らかな近似を視覚的に比較できます。
出力結果
上記のコードを実行すると、以下のような出力が得られます。


-
Python Matplotlibで3Dグラフをプロットする方法を解説
PythonのMatplotlibを使えば、3次元の散布図やグラフを簡単に描画できます。この記事では、mpl_toolkits.mplot3dモジュールを利用して3Dグラフを作成する手順を、サンプルコード付きでわかりやすく解説します。 3Dグラフをプロットする基本手順 Pythonで3Dグラフを描くには、以下のステップに従います。 figure()メソッドを使って、新しい図(フィギュア)を作成するか、既存の図をアクティブにします。 Axes3Dオブジェクトを取得して、3D用の座標軸を準備します。 x、y、zそれぞれのデータポイントをリストとして定義します。 scatter3D()メソッドを使
-
Matplotlibで任意のデータを使って4Dプロットを作成する方法
Matplotlibでは、x・y・z の3つの座標データに加え、c(色) を第4の次元として割り当てることで、いわゆる「4Dプロット」を実現できます。これは実際には3D散布図にカラーマップを組み合わせたものであり、点の位置が3次元情報を、色がもう1つの変数を表現します。以下の手順に従うことで、標準正規分布に従うランダムなデータポイントを使った4Dプロットを簡単に作成できます。手順figure() メソッドを使用して、新しい図を作成するか、既存の図をアクティブ化します。サブプロット構成の一部として、3D投影(projection=3d)を指定した Axes を追加します。NumPy を使って x