PythonのMatplotlibで表現できる様々なグラフ
執筆者:南波真之
※本記事は吉政創成株式会社「Python学習とキャリアアップ」より寄稿されたコラムとなります。

皆さん、こんにちは。
南波真之(なんばさねゆき)と申します。
私はエンジニアではない文系の人間ですが、Pythonの可能性やデータ分析を使った仕事に興味があります。
前回はPythonで2次元グラフを描画するライブラリのMatplotlibを使って、どのようにグラフに描画をするのか、また日本語を表示させる場合に発生することがある「文字化け」の解消方法を説明してきました。
Matplotlibの基本的な使い方について、ご興味ある方はぜひご覧ください。
さて、今回もMatplotlibです。私が勉強しているPythonによるあたらしいデータ分析の教科書(翔泳社)の、P184.〜P.201の部分です。Matplotlibを使い、様々な2次元グラフを描画するところを学習してみました。
様々なグラフ描画のためのメソッド
Matplotlibで2次元グラフを描画する際には、それぞれのグラフに対応する「メソッド」を使います。各メソッドには、引数を渡すことで表示させたいものを指定してあげます。
一番基本的な折れ線グラフを例に説明してみます。折れ線グラフの場合は plotメソッド を利用します。
import matplotlib.pyplot as plt
# 描画オブジェクト(fig)とサブプロット(ax)を生成する
fig, ax = plt.subplots()
# 折れ線グラフのデータを用意
x = [1, 5, 10, 15, 20]
y1 = [1, 2.5, 5, 7.5, 10]
y2 = [25, 20, 15, 10, 5]
# 折れ線グラフに表示
ax.plot(x, y1, label='xとy1′)
ax.plot(x, y2, label='xとy2′)
# 凡例(ラベル)の表示:左上に表示
ax.legend(loc='best')
# グラフにタイトルをつける
ax.set_title('折れ線グラフのサンプル')
# x軸の軸ラベルを設定
plt.xlabel('x')
# y軸の軸ラベルを設定
plt.ylabel('y')
# グラフに表示
plt.show()

これを実行すると、このようなグラフの描画がされます。
もし日本語が文字化けしましたら、前回の記事に対策を記載していますのでご覧ください。
コードの中で、
ax.plot(x, y1, label='xとy1′)
ax.plot(x, y2, label='xとy2′)
としていた部分が折れ線グラフを表示する plotメソッド の部分です。このメソッドでグラフの種類を指定することが可能です。主要なグラフは一覧で記載します。
【Matplotlibのグラフメソッド】
- 折れ線グラフ:plotメソッド
- 棒グラフ:barメソッド
- 散布図:scatterメソッド
- ヒストグラム:histメソッド
- 箱ひげ図:boxplotメソッド
- 円グラフ:pieメソッド
グラフはデータの見せ方によって変えるものですので、適切な表現をこのグラフメソッドで表示できるようにしておきたいところです。
それでは、試しにいくつかグラフを作ってみます。表示するデータについては説明上、コードの中に記載しておりますのでご了承ください。
棒グラフを使った冷蔵庫の月別売上高
fig, ax = plt.subplots()
# 折れ線グラフのデータ
x = [1, 2, 3, 4 ,5 ,6, 7, 8, 9, 10, 11, 12]
y1 = [100, 104, 300, 210, 102, 76, 110, 100, 40, 99, 96, 120]
# 棒グラフに表示
ax.bar(x, y1, label='冷蔵庫')
# 凡例(ラベル)の表示:左上に表示
ax.legend(loc='best')
# グラフにタイトルをつける
ax.set_title('2021年冷蔵庫売上高(月別)')
# x軸の軸ラベルを設定
plt.xlabel('月')
# y軸の軸ラベルを設定
plt.ylabel('売上高(百万円)')
# グラフに表示
plt.show()

次は、散布図を使ってみます。
気温と肉まんの売上の関連性
fig, ax = plt.subplots()
# 利用するデータ
## 平均気温データ
temp = np.array([5.4, 8.5 ,12.8, 15.1, 19.6, 22.7, 25.9, 27.4, 22.3, 18.2, 13.7, 7.9])
## 売上データ
sales = np.array([582, 603, 553, 480, 385, 320, 223, 163, 169, 206, 269, 321])
# 散布図を描画
ax.scatter(temp, sales, marker='s')
# タイトルなどの記載
ax.set_title('平均気温と肉まんの売上の関連性')
ax.grid()
# x軸の軸ラベルを設定
plt.xlabel('月別平均気温(℃)')
# y軸の軸ラベルを設定
plt.ylabel('売上高(百万円)')
plt.show()

いかがでしょうか。
グラフはどういう情報を伝えたいのかで使い方が変わってくるものですのでその部分を判断していただければ、あとはMatplotlibを使ってかんたんに描画ができます。細かい情報はMatplotlibの公式ドキュメントに記載があります。興味があればぜひご覧ください。
Matplotlibを使いこなすためには
基本的な統計や図式の知識も
今回はMatplotlibを使い、様々なグラフ描画について取り上げてきました。
私達が学習しているPythonやMatplotlibは、あくまで「ツール」です。本質はこの「ツール」を使って何がしたいのか、という部分です。
そのため、どういったデータをどのように表現して何に使いたいのか、という具体的なユースケースを想定して学習したほうが身につきますし、楽しいと思っています。
私は普段は一般企業でビジネスをしているため、売上やその周辺のデータをこのMatplotlibなどを使ってどう表現できるか、という観点で学習しています。
インターネット・アカデミーは、Python講座が充実しています。Python認定スクールにもなっているため質の高い知識を得ることができ、基礎学習の先にあるそれぞれの目標を目指していくためには良い場所となります。ご興味ある方は各講座のページを覗いてみてください。
南波真之
デジタル人材育成・助成金のお役立ち資料をダウンロード

デジタル人材育成や助成金活用のお役立ち資料などをまとめてダウンロードしていただけます。コンサルタントへの無料相談をご希望の方はこちらからお問い合わせください。
- DX人材の育成&事例紹介 リスキリングのロードマップ付き
- デジタル人材育成に使える助成金制度
- デジタルスキル標準 役割別おすすめ講座