【Matplotlib】Pyplotヒストグラムのbins(ビン)指定方法とその解釈を徹底解説
Matplotlibのpyplot.hist()では、引数binsの指定方法によってヒストグラムのビン(階級)の解釈が大きく変わります。この記事では、「数値」「配列」「文字列」という3つの異なる指定方法でヒストグラムを描画し、それぞれの挙動の違いをわかりやすく解説します。
実装手順
- 図のサイズを設定し、サブプロット間および周囲のパディングを調整します。
- ヒストグラムにプロットするデータのリストを作成します。
- 現在の図にサブプロットを追加します(nrows=1、ncols=3、index=1)。
- binsに数値を指定してヒストグラムを描画します。
- 現在の図にサブプロットを追加します(nrows=1、ncols=3、index=2)。
- binsに配列を指定してヒストグラムを描画します。
- 現在の図にサブプロットを追加します(nrows=1、ncols=3、index=3)。
- binsに文字列を指定してヒストグラムを描画します。
コード例
import matplotlib.pyplot as plt plt.rcParams["figure.figsize"] = [7.50, 3.50] plt.rcParams["figure.autolayout"] = True data = [1, 3, 1, 4, 7, 1, 3, 5, 4, 6, 5] plt.subplot(131) plt.hist(data, bins=len(data)) plt.subplot(132) plt.hist(data, bins=[1, 3, 5, 7]) plt.subplot(133) plt.hist(data, bins='stone') plt.show()
出力結果

各bins指定方法の解釈の違い
1. 数値を指定した場合
bins=len(data)のように整数を渡すと、データの最小値から最大値までの範囲が、指定した数の等間隔のビンに自動的に分割されます。上の例ではデータ点が11個あるため、11個のビンが作成されます。
2. 配列を指定した場合
bins=[1, 3, 5, 7]のように配列を渡すと、配列の各要素がビンの境界値(エッジ)として直接使用されます。この例では「[1, 3)」「[3, 5)」「[5, 7]」の3つのビンが作成され、データの分布を任意の区切りで細かく制御できます。
3. 文字列を指定した場合
bins='stone'のように文字列を渡すと、NumPyが提供するビン幅の自動計算アルゴリズムが適用されます。利用可能な主な方式には、'auto'、'fd'(Freedman–Diaconis則)、'scott'、'stone'、'rice'、'sturges'、'sqrt'などがあり、データの特性に応じて最適なビン数が自動的に決定されます。
このように、binsの指定方法を使い分けることで、同じデータでも見え方が大きく変わります。目的に応じて適切な指定方法を選択しましょう。
-
matplotlibの円グラフで左側のラベルを非表示・削除する方法
matplotlibで円グラフ(パイチャート)を作成すると、グラフの左側に意図しないラベルや余白が表示されることがあります。これはy軸ラベルが自動的に描画されるためです。この不要なラベルを削除するには、plt.ylabel() のように空文字列を指定するのが最も簡単な方法です。手順時間(hours)、アクティビティ(activities)、色(colors)のリストを作成します。pie() メソッドを使用して円グラフを描画します。左側のラベルを非表示にするために、plt.ylabel() で空文字列を設定します。サンプルコードimport matplotlib.pyplot as plt #
-
Pythonでヒストグラムに対数ビンを設定する方法
Matplotlibのplt.hist()メソッドでは、bins引数に値を指定することで、ヒストグラムを描画する際に対数ビン(ログスケールの区切り)を設定できます。この記事では、np.logspace()を使って対数スケール上に等間隔に配置されたビンを生成し、それをヒストグラムに適用する手順を解説します。 手順 範囲が100の配列xを作成します。 plt.hist()メソッドでヒストグラムを描画します。bins引数には、対数スケール上で等間隔に配置された数値を返すnp.logspace()を渡し、対数ビンを指定します。 plt.gca()で現在の軸を取得し(存在しない場合は自動的に作成されま