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

MatplotlibのヒストグラムでX軸ラベルを各ビンの中央に配置する方法

Matplotlibのヒストグラムプロットでは、デフォルトのままではX軸の目盛りラベルがビン(階級)の境界線上に表示されます。これを各バー(パッチ)の中央に配置するには、各パッチの中間点を計算し、xticks()メソッドを使って目盛りラベルを適切な位置に設定します。

手順

  • 図のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。
  • NumPyを使って、標準正規分布に従うランダムなサンプルデータxを作成します。
  • ビン(階級)の数を格納する変数を初期化します。
  • hist()メソッドを使用してヒストグラムを描画します。
  • 戻り値として得られるpatchesから、各バーの中央位置(_x0と_x1の平均値)を計算し、目盛り位置のリストを作成します。
  • 0から始まる連番など、目盛りラベルのリストを作成します。
  • xticks()メソッドで、計算した位置に目盛りとラベルを設定します。
  • show()メソッドで図を表示します。

コード例

import numpy as np
from matplotlib import pyplot as plt
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
x = np.random.randn(1000)
n_bins = 10
n, bins, patches = plt.hist(x, bins=n_bins, edgecolor='black')
ticks = [(patch._x0 + patch._x1)/2 for patch in patches]
ticklabels = [i for i in range(n_bins)]
plt.xticks(ticks, ticklabels)
plt.show()

コードのポイント

このコードの重要な部分は、リスト内包表記 (patch._x0 + patch._x1)/2 の箇所です。hist()メソッドは戻り値として各バーを表すRectangleオブジェクト(patches)を返すため、それぞれの左端(_x0)と右端(_x1)の平均を取ることで、バーの中央のX座標を求められます。この位置に対して連番のラベルを割り当てることで、ラベルが各ビンの真ん中に揃った見やすいヒストグラムになります。

出力結果

MatplotlibのヒストグラムでX軸ラベルを各ビンの中央に配置する方法

  1. Matplotlibで複数のX軸・Y軸をプロットする方法(twinx / twinyの使い方)

    データ分析や可視化では、スケールの異なる2つのデータ系列を同じグラフ上に重ねて表示したいケースがよくあります。Matplotlibでは、twinx() メソッドや twiny() メソッドを使うことで、X軸またはY軸を共有しながら独立したもう一方の軸を持つグラフを簡単に作成できます。 この記事では、左右に異なるY軸を持つグラフを作成する手順を、具体的なコード例とともに解説します。 複数のY軸を持つグラフの作成手順 以下の手順で、左と右に別々のY軸スケールを持つプロットを作成できます。 subplots() メソッドを使用して、図(figure)とサブプロット(axes)を作成します。 最初の

  2. Matplotlibでヒストグラムデータから折れ線グラフを描画する方法

    Matplotlibでヒストグラムのデータをもとに折れ線グラフを描画するには、NumPyのhistogram()メソッドを使ってデータセットのヒストグラムを事前に計算しておくのが便利です。この記事では、同じデータをヒストグラムと折れ線グラフの両方で可視化する手順を解説します。実装の手順現在の図にサブプロットを追加します。nrows=2、ncols=1とし、index=1を指定します。NumPyのhistogram()メソッドを使用して、データセットのヒストグラム(度数とビンの境界値)を取得します。edgecolor=blackを指定してhist()メソッドでヒストグラムを描画します。インデック