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

Matplotlibで2つのヒストグラムのビン幅を揃える方法

Matplotlibで2つのヒストグラムを比較する際、ビン幅が異なると正確な比較ができません。そこで、データセット全体から共通のビン境界を計算することで、両方のヒストグラムのビン幅を揃えることができます。

手順

  • ランダムデータ a と、正規分布に基づくデータ b を作成します。

  • 共通のビン幅を定義するための変数 bins を初期化します。

  • hist() メソッドを使って、a と共通ビンでヒストグラムを描画します。

  • hist() メソッドを使って、b と同じ共通ビンでヒストグラムを描画します。

  • 図を表示するには show() メソッドを使用します。

サンプルコード

import numpy as np
from matplotlib import pyplot as plt
plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True
a = np.random.random(100) * 0.5
b = 1 - np.random.normal(size=100) * 0.1
bins = 10
bins = np.histogram(np.hstack((a, b)), bins=bins)[1]
plt.hist(a, bins, edgecolor='black')
plt.hist(b, bins, edgecolor='black')
plt.show()

ポイント解説

このコードの重要な部分は次の行です。

bins = np.histogram(np.hstack((a, b)), bins=bins)[1]

np.hstack((a, b)) で2つのデータセットを1つに結合し、結合したデータ全体に対して np.histogram() を実行しています。その戻り値の2番目の要素(ビンの境界値の配列)を取り出すことで、両方のデータセットをカバーする共通のビン境界を作成できます。

こうして得られた共通ビンを plt.hist() の第2引数として渡すことで、2つのヒストグラムがまったく同じビン幅・ビン位置で描画され、視覚的な比較が容易になります。また、edgecolor='black' を指定すると各バーの輪郭が黒で描かれ、重なり合う領域も見分けやすくなります。

出力結果

Matplotlibで2つのヒストグラムのビン幅を揃える方法

実行すると、ランダムデータ a と正規分布データ b が同一のビン境界を持つヒストグラムとして1つの図に表示されます。これにより、分布の形状や範囲の違いを正確に比較できるようになります。

  1. MatplotlibでLaTeX出力と同じフォントを表示する方法

    MatplotlibのグラフでLaTeX風フォントを使用する方法Matplotlibでグラフを作成する際、軸ラベルやタイトルをLaTeXと同じ数式フォントで表示したいケースは多くあります。LaTeX形式($...$ で囲まれた記法)を使えば、数式を美しく描画できます。ここでは、sin関数のカーブをLaTeX表記でプロットし、タイトルにカスタムフォントを適用する手順を紹介します。実装の手順NumPyを使って x 軸のデータポイントを作成します。y = sin(x) に基づいて y 軸のデータポイントを作成します。LaTeX表記(r$\sin (x)$)を使用して、x と y の曲線をプロットしま

  2. Pythonでヒストグラムに対数ビンを設定する方法

    Matplotlibのplt.hist()メソッドでは、bins引数に値を指定することで、ヒストグラムを描画する際に対数ビン(ログスケールの区切り)を設定できます。この記事では、np.logspace()を使って対数スケール上に等間隔に配置されたビンを生成し、それをヒストグラムに適用する手順を解説します。 手順 範囲が100の配列xを作成します。 plt.hist()メソッドでヒストグラムを描画します。bins引数には、対数スケール上で等間隔に配置された数値を返すnp.logspace()を渡し、対数ビンを指定します。 plt.gca()で現在の軸を取得し(存在しない場合は自動的に作成されま