Pythonでヒストグラムを作成する方法【初心者向け】

初心者向けにPythonでヒストグラムを作成する方法について解説しています。ヒストグラムの基本の作成方法、棒の幅や色といった各種表示形式の指定方法をサンプルコードで見ながら学習しましょう。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,000以上あります。

Pythonでヒストグラムを作成する方法について解説します。

Pythonについてそもそもよく分からないという方は、Pythonとは何なのか解説した記事をまずご覧ください。

 

なお本記事は、TechAcademyのPythonオンライン講座の内容をもとにしています。

 

田島悠介

今回は、Pythonに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

ヒストグラムを作成する方法について詳しく説明していくね!

大石ゆかり

お願いします!

 

ヒストグラムを作成し操作する方法

ヒストグラム(histogram)とは、縦軸に度数、横軸に階級をとったグラフの一種です。例えば、あるWebページの日毎の閲覧回数を確認したい、というように、データの分布状況を視覚的に認識するためによく用いられます。

Python でヒストグラムを作成するには、 matplotlib ライブラリの pyplot.hist メソッドを使用します。

matplotlib.pyplot.hist(データ, オプション...)

データには1次元配列を設定します。オプションはカンマで区切って指定します。以下の種類があります。

オプション 説明 既定値
bins ヒストグラムの棒の数 10
range データをヒストグラムにする値の範囲を指定 全ての値
density Trueにすると確率密度で描画。normedと両方は指定不可  False
weights それぞれの棒に重みを付ける
cumulative Trueにすると累積ヒストグラム False
bottom ヒストグラムの下の余白
histtype ヒストグラムの棒の形を指定。bar、barstacked(積み上げ)、step(線)などから選択 bar
align それぞれの棒の中心。left、mid、rightから選択 mid
orientation ヒストグラムの方向。horizontal(横方向)、vertical(縦方向)から選択 horizontal
rwidth ヒストグラムの棒の幅
log Trueにするとヒストグラムを対数目盛(桁数)で作成する。データが特定の範囲に偏っている場合に使用する
color ヒストグラムの色
label 凡例
stacked Trueにすると積み上げヒストグラムを表示する False
normed Trueにすると正規化(合計が1になるよう調整)を行う False

各オプションの詳しい使い方などは公式ドキュメントを参考にしてください

https://matplotlib.org/api/_as_gen/matplotlib.pyplot.hist.html

 

実際に書いてみよう

今回のサンプルプログラムでは、基本的なヒストグラムの描画方法を確認します。なお、実行環境により、グラフを表示させるための設定が必要です。

ターミナル/コマンドプロンプトから実行する場合

グラフをファイルに保存して確認します。ファイルに保存するには以下ように「この行を追記」と書かれた行を追記します。

import numpy as np
import matplotlib.pyplot as plt
matplotlib.use('Agg') # この行を追記

x = np.random.normal(50, 10, 1000)
plt.hist(x, bins=50)

plt.savefig("hoge.png") # この行を追記

 

JupyterNotebookから実行する場合

先頭に「% matplotlib inline」と記載します。

% matplotlib inline
import numpy as np
import matplotlib.pyplot as plt

x = np.random.normal(50, 10, 1000)
plt.hist(x, bins=50)

それではサンプルプログラムと実行結果を確認していきましょう。はじめに以下のプログラムを実行します。

import numpy as np
import matplotlib.pyplot as plt

# 正規分布に沿ったランダムデータを作成
x = np.random.normal(50, 10, 1000)
 
# ヒストグラムを表示する
plt.hist(x)

実行結果は以下のようになります。

次にオプションを指定してみましょう。binsで棒の数を指定できます。

import numpy as np
import matplotlib.pyplot as plt

# 正規分布に沿ったランダムデータを作成
x = np.random.normal(50, 10, 1000)
 
# ヒストグラムを表示
plt.hist(x, bins=50)

実行結果は以下のようになります。

その他、オプションを指定することで、様々なヒストグラムを作成することができます。

 

この記事を監修してくれた方

太田和樹(おおたかずき)
ITベンチャー企業のPM兼エンジニア

普段は主に、Web系アプリケーション開発のプロジェクトマネージャーとプログラミング講師を行っている。守備範囲はフロントエンド、モバイル、サーバサイド、データサイエンティストと幅広い。その幅広い知見を生かして、複数の領域を組み合わせた新しい提案をするのが得意。

開発実績:画像認識技術を活用した駐車場混雑状況把握(実証実験)、音声認識を活用したヘルプデスク支援システム、Pepperを遠隔操作するアプリの開発、大規模基幹系システムの開発・導入マネジメント

地方在住。仕事のほとんどをリモートオフィスで行う。通勤で消耗する代わりに趣味のDIYや家庭菜園、家族との時間を楽しんでいる。

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

オンラインのプログラミングスクールTechAcademyではPythonを使って機械学習の基礎を学ぶPythonオンライン講座を開催しています。

初心者向けの書籍を使って人工知能(AI)や機械学習について学ぶことができます。

現役エンジニアがパーソナルメンターとして受講生に1人ずつつき、マンツーマンのメンタリングで学習をサポートし、最短4週間で習得することが可能です。

また、現役エンジニアから学べる無料のプログラミング体験会も実施しているので、ぜひ参加してみてください。