Matplotlib ヒストグラム

pyplot の hist() メソッドを使用してヒストグラムを描画できます。

hist() メソッドは、Matplotlib ライブラリの pyplot サブライブラリにある、ヒストグラムを描画するための関数です。

hist() メソッドは、データの分布を可視化するために使用できます。たとえば、データの中心傾向、歪度、外れ値などを確認できます。

hist() メソッドの構文は次のとおりです:

matplotlib.pyplot.hist(x, bins=None, range=None, density=False, weights=None, cumulative=False, bottom=None, histtype='bar', align='mid', orientation='vertical', rwidth=None, log=False, color=None, label=None, stacked=False, **kwargs)

パラメータの説明:

  • x:ヒストグラムを描画するデータを指定します。1次元配列またはリストを指定できます。
  • bins:省略可能なパラメータで、ヒストグラムのビン数を指定します。デフォルトは10です。
  • range:省略可能なパラメータで、ヒストグラムの値の範囲を指定します。タプルまたはリストで指定できます。デフォルトはNoneで、データの最小値と最大値が使用されます。
  • density:省略可能なパラメータで、ヒストグラムを正規化するかどうかを指定します。デフォルトはFalseで、ヒストグラムの高さは各ビン内のサンプル数であり、頻度や確率密度ではありません。
  • weights:省略可能なパラメータで、各データポイントの重みを指定します。デフォルトはNoneです。
  • cumulative:省略可能なパラメータで、累積分布図を描画するかどうかを指定します。デフォルトはFalseです。
  • bottom:省略可能なパラメータで、ヒストグラムの開始高さを指定します。デフォルトはNoneです。
  • histtype:省略可能なパラメータで、ヒストグラムのタイプを指定します。'bar'、'barstacked'、'step'、'stepfilled' などがあります。デフォルトは 'bar' です。
  • align:省略可能なパラメータで、ヒストグラムのビンの整列方法を指定します。'left'、'mid'、'right' を指定できます。デフォルトは 'mid' です。
  • orientation:省略可能なパラメータで、ヒストグラムの方向を指定します。'vertical'、'horizontal' を指定できます。デフォルトは 'vertical' です。
  • rwidth:省略可能なパラメータで、各ビンの幅を指定します。デフォルトはNoneです。
  • log:省略可能なパラメータで、y軸に対数スケールを使用するかどうかを指定します。デフォルトはFalseです。
  • color:省略可能なパラメータで、ヒストグラムの色を指定します。
  • label:省略可能なパラメータで、ヒストグラムのラベルを指定します。
  • stacked:省略可能なパラメータで、異なるヒストグラムを積み重ねるかどうかを指定します。デフォルトはFalseです。
  • **kwargs:省略可能なパラメータで、その他の描画パラメータを指定します。

次の例では、簡単に hist() を使用してヒストグラムを作成します:

例

import matplotlib.pyplot as plt
import numpy as np

# ランダムデータを生成
data = np.random.randn(1000)

# ヒストグラムを描画
plt.hist(data, bins=30, color='skyblue', alpha=0.8)

# グラフの属性を設定
plt.title('サンプル hist() Test')
plt.xlabel('Value')
plt.ylabel('Frequency')

# グラフを表示
plt.show()

表示結果は次のとおりです:

次の例では、hist() 関数を使用して複数のデータグループのヒストグラムを描画し、比較する方法を示します:

例

import matplotlib.pyplot as plt
import numpy as np

# 3つのランダムデータを生成
data1 = np.random.normal(0, 1, 1000)
data2 = np.random.normal(2, 1, 1000)
data3 = np.random.normal(-2, 1, 1000)

# ヒストグラムを描画
plt.hist(data1, bins=30, alpha=0.5, label='Data 1')
plt.hist(data2, bins=30, alpha=0.5, label='Data 2')
plt.hist(data3, bins=30, alpha=0.5, label='Data 3')

# グラフの属性を設定
plt.title('サンプル hist() TEST')
plt.xlabel('Value')
plt.ylabel('Frequency')
plt.legend()

# グラフを表示
plt.show()

上記の例では、3つの異なるランダムデータを生成し、hist() 関数を使用してそれらのヒストグラムを描画しました。異なる平均と標準偏差を設定することで、異なる分布特性を持つランダムデータを生成できます。

bins パラメータを 30 に設定しました。これは、データ範囲を 30 個の等幅の区間に分割し、各区間内のデータの頻度を集計することを意味します。

alpha パラメータを 0.5 に設定しました。これは、各ヒストグラムの色の透明度が 50% であることを意味します。

label パラメータを使用して各ヒストグラムのラベルを設定し、凡例に表示できるようにしました。

次に、legend() 関数を使用して凡例を表示します。最後に、title()、xlabel()、ylabel() 関数を使用して、グラフのタイトルと軸ラベルを設定しました。

表示結果は次のとおりです:

上の図から、これら3つのデータグループの分布状況をはっきりと確認できます。data1 と data2 の分布は正規分布に近く、data3 の分布は歪んでいます。

このようにヒストグラムを比較する方法は、異なるデータグループの分布を分析・比較するのに役立ちます。

Pandas との連携

次の例では、Pandas と組み合わせてヒストグラムを描画します:

例

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
 
# NumPy を使用して乱数を生成
random_data = np.random.normal(170, 10, 250)
 
# データを Pandas DataFrame に変換
dataframe = pd.DataFrame(random_data)
 
# Pandas の hist() メソッドを使用してヒストグラムを描画
dataframe.hist()


# グラフの属性を設定
plt.title('サンプル hist() Test')
plt.xlabel('X-Value')
plt.ylabel('Y-Value')

# グラフを表示
plt.show()

表示結果は次のとおりです:

データフレーム以外にも、Pandas の Series オブジェクトを使用してヒストグラムを描画できます。データフレームの列を Series オブジェクトに置き換えるだけでよいです。

例

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

# ランダムデータを生成
data = pd.Series(np.random.normal(size=100))

# ヒストグラムを描画
# bins パラメータはヒストグラムのビンの数を指定します
plt.hist(data, bins=10)

# グラフのタイトルと軸ラベルを設定
plt.title('サンプル hist() Tes')
plt.xlabel('X-Values')
plt.ylabel('Y-Values')

# グラフを表示
plt.show()

その他の拡張