Matplotlibでヒストグラムを描く方法!初心者向けの完全ガイド

※本サイトにはプロモーション・広告が含まれています。

(最終更新月: 2024年11月)

✔こんな方におすすめの記事です

「Pythonでデータの分布を表示したい」
「Matplotlibでヒストグラムをきれいにかけるようになりたい」
「ヒストグラムのカスタマイズ方法を知りたい」

✔当記事を通じて得られること

  • ヒストグラムの基本的な描き方と理解
  • カラーやスタイルのカスタマイズ方法
  • 実践的なヒストグラム作成テクニック

当記事では、ヒストグラムの基礎から応用的なカスタマイズまで、実例を交えて幅広く解説していきます。
ぜひ最後までご覧ください。

筆者プロフィール

筆者プロフィールアイコン

【現職】プロダクトマネージャー

【副業】ブログ(月間20万PV)/YouTube/Web・アプリ制作

「プログラミング × ライティング × 営業」の経験を活かし、30後半からのIT系職へシフト。現在はプロダクトマネージャーとして、さまざまな関係者の間に入り奮闘してます。当サイトでは、実際に手を動かせるWebアプリの開発を通じて、プログラミングはもちろん、IT職に必要な情報を提供していきます。

【当ブログで紹介しているサイト】

当サイトチュートリアルで作成したデモ版日報アプリ

Django × Reactで開発したツール系Webアプリ

✔人に見せても恥ずかしくないコードを書こう

「リーダブルコード」は、わかりやすく良いコードの定義を教えてくれる本です。

  • 見るからにきれいなコードの書き方
  • コードの分割方法
  • 変数や関数の命名規則

エンジニアのスタンダートとすべき基準を一から解説しています。

何回も読むのに値する本なので、ぜひ手にとって読んでみてください。

ヒストグラムとMatplotlibの基礎知識

データ分析において、ヒストグラムは非常に重要な可視化ツールです。
Matplotlibを使えば、簡単にヒストグラムを作成できます。

  • ヒストグラムとは
  • Matplotlibの基本構造
  • ヒストグラムの使い場面

ヒストグラムとは

ヒストグラムは、データの分布を視覚的に表現するグラフです。
横軸には値の範囲(区間)、縦軸にはその区間に含まれるデータの数(頻度)が表示されます。
以下のようなデータがヒストグラムで表現できます。

import numpy as np
import matplotlib.pyplot as plt

# データの生成
data = np.random.normal(100, 15, 1000)  # 平均100、標準偏差15の正規分布データ1000個

Matplotlibの基本構造

Matplotlibは、Pythonの標準的なグラフ描画ライブラリです。
主にpyplotモジュールを使用して、グラフを作成していきます。
基本的な構造は次のようになります。

import matplotlib.pyplot as plt

# グラフの作成
plt.figure(figsize=(10, 6))  # グラフのサイズ指定
plt.hist(data)  # ヒストグラムの描画
plt.show()  # グラフの表示

ヒストグラムの使い場面

ヒストグラムは、データの分布を理解するのに適しています。
例えば、テストの点数分布や身長・体重のデータ分析などで活用できます。
特に以下のような場面で重宝します。

  • データの中心傾向を把握したいとき
  • 外れ値を見つけたいとき
  • データの偏りを確認したいとき

基本的なヒストグラムの作成方法

Matplotlibでヒストグラムを作成する基本的な方法を説明します。
シンプルなコードで、すぐに実践できる内容となっています。

  • 基本的なヒストグラムの描画
  • データの準備方法
  • 主要なパラメータの設定

基本的なヒストグラムの描画

最もシンプルなヒストグラムは、以下のコードで作成できます。

import numpy as np
import matplotlib.pyplot as plt

# データの生成
data = np.random.normal(100, 15, 1000)

# ヒストグラムの描画
plt.hist(data)
plt.show()

データの準備方法

ヒストグラム用のデータは、様々な方法で準備できます。
NumPyを使うと、簡単にテストデータを生成できます。
以下に、データ準備の例を示します。

# 様々なデータ生成方法
uniform_data = np.random.uniform(0, 100, 1000)  # 一様分布
normal_data = np.random.normal(50, 10, 1000)    # 正規分布
exp_data = np.random.exponential(2.0, 1000)     # 指数分布

主要なパラメータの設定

hist関数には、様々なパラメータを設定できます。
これらのパラメータを使うことで、ヒストグラムの見た目を調整できます。
基本的なパラメータには以下のようなものがあります。

plt.hist(data,
         bins=30,           # ビンの数
         range=(0, 200),    # データ範囲
         density=True,      # 密度表示
         alpha=0.7)         # 透明度

ヒストグラムのカスタマイズ

ヒストグラムは様々な方法でカスタマイズできます。
見やすく、情報を効果的に伝えるためのカスタマイズ方法を紹介します。

  • 色とスタイルの設定
  • ラベルとタイトルの追加
  • 軸の設定

色とスタイルの設定

ヒストグラムの色やスタイルを変更することで、見やすいグラフを作成できます。

plt.hist(data,
         color='skyblue',     # 棒の色
         edgecolor='black',   # 枠線の色
         linewidth=1.2)       # 枠線の太さ

# スタイルの変更
plt.style.use('seaborn')      # プロット全体のスタイル

ラベルとタイトルの追加

グラフに適切なラベルとタイトルを追加することで、情報をより明確に伝えられます。

plt.hist(data)
plt.title('テストスコアの分布', fontsize=14)
plt.xlabel('点数', fontsize=12)
plt.ylabel('頻度', fontsize=12)
plt.grid(True, alpha=0.3)  # グリッドの追加

軸の設定

軸の範囲や目盛りを調整することで、データをより効果的に表現できます。

plt.hist(data)
plt.xlim(0, 200)          # x軸の範囲
plt.ylim(0, 100)          # y軸の範囲
plt.xticks(np.arange(0, 201, 20))  # x軸の目盛り
plt.yticks(np.arange(0, 101, 10))  # y軸の目盛り

複数のヒストグラムの描画

複数のデータセットを比較する場合、複数のヒストグラムを描画する必要があります。
その方法と注意点について説明します。

  • 重ね合わせヒストグラム
  • サブプロットの使用
  • 複数データの効果的な比較方法

重ね合わせヒストグラム

複数のデータセットを1つのグラフに重ねて表示できます。

data1 = np.random.normal(80, 10, 1000)
data2 = np.random.normal(90, 15, 1000)

plt.hist(data1, alpha=0.5, label='グループA')
plt.hist(data2, alpha=0.5, label='グループB')
plt.legend()
plt.show()

サブプロットの使用

複数のヒストグラムを別々のグラフとして表示することもできます。

fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 5))

ax1.hist(data1, color='skyblue')
ax1.set_title('グループA')

ax2.hist(data2, color='lightgreen')
ax2.set_title('グループB')

plt.tight_layout()
plt.show()

複数データの効果的な比較方法

データを効果的に比較するためのテクニックがあります。

# 正規化したヒストグラムの比較
plt.hist(data1, density=True, alpha=0.5, label='グループA')
plt.hist(data2, density=True, alpha=0.5, label='グループB')
plt.legend()

# 統計情報の追加
print(f"グループAの平均: {np.mean(data1):.2f}")
print(f"グループBの平均: {np.mean(data2):.2f}")

高度なヒストグラムのテクニック

より洗練されたヒストグラムを作成するための高度なテクニックを紹介します。
実践的な場面で役立つ応用的な手法について説明します。

  • 累積ヒストグラム
  • カーネル密度推定の追加
  • 統計情報の表示

累積ヒストグラムの作成

累積ヒストグラムは、データの累積分布を表示します。

plt.hist(data, cumulative=True, 
         histtype='step',
         label='累積分布')
plt.legend()
plt.grid(True, alpha=0.3)
plt.show()

カーネル密度推定の追加

カーネル密度推定を追加することで、データの分布をより滑らかに表現できます。

from scipy import stats

density = stats.gaussian_kde(data)
xs = np.linspace(data.min(), data.max(), 200)
plt.hist(data, density=True, alpha=0.5)
plt.plot(xs, density(xs), 'r-', label='KDE')
plt.legend()
plt.show()

統計情報の表示

ヒストグラムに統計情報を追加することで、より詳細な分析が可能になります。

mean = np.mean(data)
std = np.std(data)
median = np.median(data)

plt.hist(data)
plt.axvline(mean, color='r', linestyle='--', label=f'平均値: {mean:.2f}')
plt.axvline(median, color='g', linestyle='--', label=f'中央値: {median:.2f}')
plt.legend()
plt.show()

まとめ

当記事では、Matplotlibを使用したヒストグラムの作成について学習してきました。

  • ヒストグラムの基本概念と作成方法を理解できました
  • 色やスタイルのカスタマイズ方法を習得しました
  • 複数データの比較や高度なテクニックまで幅広く学びました

これらの知識を活用すれば、データの分布を効果的に可視化できます。
まずは簡単なヒストグラムから始めて、徐々にカスタマイズを加えていくことをおすすめします。
データ分析の幅が広がり、より深い洞察が得られるようになることでしょう。

タイトルとURLをコピーしました