icon
icon

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

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

テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日  調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,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を使った人工知能(AI)や機械学習の基礎を習得できるオンラインブートキャンプPython講座を開催しています。

挫折しない学習方法を知れる説明動画や、現役エンジニアとのビデオ通話とチャットサポート、学習用カリキュラムを体験できる無料体験も実施しているので、ぜひ参加してみてください。

初心者・未経験でもできる。まずはテックアカデミーに相談しよう

プログラミングを独学で学習していて、このように感じた経験はないでしょうか?

  • ・調べてもほしい情報が見つからない
  • ・独学のスキルが実際の業務で通用するのか不安
  • ・目標への学習プランがわからず、迷子になりそう

テックアカデミーでは、このような 学習に不安を抱えている方へ、マンツーマンで相談できる機会を無料で提供 しています。
30分間、オンラインでどんなことでも質問し放題です。

「受けてよかった」と感じていただけるよう カウンセラーやエンジニア・デザイナー があなたの相談に真摯に向き合います。

「自分に合っているか診断してほしい」
「漠然としているが話を聞いてみたい」

こんなささいな悩みでも大丈夫です。

無理な勧誘は一切ありません ので、まずはお気軽にご参加ください。
※体験用のカリキュラムも無料で配布いたします。(1週間限定)

今なら参加者限定の割引特典付き! 無料相談を予約する