matplotlibのhist()が返す「n・bins・patches」とは?意味と使い方を解説
matplotlibのhist()メソッドは、ヒストグラムを作成するときにn(各ビンの度数)、bins(ビンの境界値)、patches(描画オブジェクトのコンテナ)という3つの戻り値を返します。
patchesは、ヒストグラムを構成する個々のバー(Rectangleアーティスト)を格納するコンテナです。複数のデータセットを入力した場合は、コンテナのリストが返されます。binsは、指定した範囲を等幅に分割する際のビンの境界値を定義します。
それでは、実際の例を使って動作を確認してみましょう。
手順
- 図のサイズを設定し、サブプロット間および周囲の余白を調整します。
- numpyを使ってランダムなデータポイントを生成します。
- 100個のビンを持つヒストグラムを描画します。
- アーティストオブジェクトに対してプロパティを設定します。
- show()メソッドで図を表示します。
コード例
import numpy as np import matplotlib.pyplot as plt plt.rcParams["figure.figsize"] = [7.50, 3.50] plt.rcParams["figure.autolayout"] = True x = np.random.normal(size=100) n, bins, patches = plt.hist(x, bins=100) plt.setp(patches[0], 'facecolor', 'yellow') plt.show()
実行結果

この例では、正規分布に従う100個の乱数を生成し、100個のビンでヒストグラムを描画しています。戻り値のpatchesから最初のバーを取り出し、setp()メソッドで塗りつぶし色を黄色に変更している点にも注目してください。このように、patchesを操作することで特定のバーだけ色やスタイルを個別にカスタマイズできます。
-
Matplotlibのplt.show()とcv2.imshow()の違いとは?画像表示の差をわかりやすく解説
Pythonで画像を扱う際、MatplotlibとOpenCV(cv2)はどちらも画像を多次元のNumPy配列として読み込みます。しかし、両者には重要な違いがあります。Matplotlibのimreadメソッドは画像を赤(R)・緑(G)・青(B)の順(RGB順)のNumPy配列として読み込み、imshowで画面に表示します。一方、OpenCVのcv2.imreadも同様に多次元NumPy配列として画像を読み込みますが、チャンネルの並びが逆順(BGR順)になっている点が最大の特徴です。この違いを理解せずに使うと、cv2で読み込んだ画像をMatplotlibで表示した際に色が反転して見えるという現
-
Matplotlibの図に凡例を配置・整列させる方法
Matplotlibで作成した図(フィギュア)に凡例を適切な位置に配置し、要素を整列させる方法を解説します。凡例の位置調整には bbox_to_anchor 引数を使用するのがポイントです。 手順 plot() メソッドを使って line1 と line2 の2本の線をプロットします。 legend() メソッドで図に凡例を配置します。このとき bbox_to_anchor を使って凡例の位置を指定し、ncol 引数で凡例要素を横並びに整列させます。 show() メソッドを呼び出して図を表示します。 コード例 from matplotlib import pyplot as plt pl