【備忘録】Pythonでグラフを作成するには?(Matplotlib)

Python

皆さん、こんにちは!
上越市を拠点にし、「FA設備・装置開発」と「画像処理」に強い会社、NSIです!
私達は豊富な経験と専門知識で、各種業界の自動化・システム化のお手伝いをしています。

1月も残りわずかですね。
今年は大雪ではなかったものの、まだまだ寒い日が続いております。
そんな寒さを吹き飛ばすものといえば… プログラムですよね。(?)
それでは今月ラストの記事も、張り切っていきましょう!

今回はPythonでグラフを作成する方法についてまとめました。
Pythonでグラフを作成したい!という方の参考になれば嬉しいです。

Pythonでグラフを作成できるメリットとは?

日々の業務において、データを集計するにはExcelがよく利用されます。
縦棒や折れ線、円グラフなど、様々な種類のグラフが作成できて便利ですよね。
しかし、Pythonでグラフを作成できることでこんなメリットがあります。

システムに組み込みやすい

例として「ある検査が終わったらデータを集計し、グラフを出力する」というシステムがあったとしましょう。
Excelは人の手による操作が必要なため、グラフの作成は基本的に手作業で行う必要があります。
外部からExcelを操作するライブラリもありますが、その場合、Excelファイルを操作することになります。
よって、Excelがインストールされていないとグラフの閲覧ができないという問題があります。

しかし、PythonであればExcelが不要でグラフが作成可能です。
また、ソースコードをexe化すればPython自体のインストールも不要となります。

※ Pythonのexe化については以下参照。

3Dグラフが作成できる

今回使用する「Matplotlib」というライブラリでは、3Dグラフの作成も可能です。
3Dグラフでは様々な角度でのデータの閲覧が容易に行うことができます。

Matplotlibとは?

Matplotlib」とは、Pythonで2Dおよび3Dのグラフを描画するためのライブラリです。
よく使うグラフは以下のように作成が可能です。

上記は一例で、他にも様々なグラフが作成できます。
詳しくは公式ドキュメントをご覧ください。

https://matplotlib.org/stable/gallery/index.html

Matplotlibでグラフを作成する

早速、グラフを作成してみましょう。
ここからはPythonがインストールされていることを前提に説明していきます。

1. Matplotlibのインストール

コマンドプロンプトを起動し、以下のコマンドを実行します。
※ 以下はPythonがインストールされている場合のコマンドです。別の開発環境(Anaconda)等を使っている場合は、それに合わせて変更してください。

pip install matplotlib

補足:Anacondaとは?
簡単に言うと、Pythonでの開発に必要な「ライブラリ」や「ツール」などをセットにした実行環境。
Pythonでは、必要なライブラリを「pip install ~」で1つずつインストールする必要があるが、Anacondaはインストール時にある程度のライブラリも含まれているため、わざわざインストールする手間がないのがメリット。
多様な機能が含まれている分、Pythonよりも容量を必要とするのがデメリット。

2. グラフ描画処理を作成する

続いて、グラフを作成する処理を実装していきます。
以下のような処理を作成しました。簡単に解説していきます。

import matplotlib.pyplot as plt

# 日本語フォント指定
plt.rcParams["font.family"] = 'Meiryo'

# データ
categories = ['A', 'B', 'C', 'D']
values = [3, 7, 2, 5]

# 描画
plt.bar(categories, values)

# タイトル,軸ラベル
plt.title('タイトルです')
plt.xlabel('X軸ラベルです')
plt.ylabel('Y軸ラベルです')

# 表示
plt.show()

「日本語フォント指定」では、グラフのフォントを指定しています。
Matplotlibのデフォルト設定では、英語フォントになっているため、日本語を指定した際に文字化けが発生します。
日本語フォントを指定することで、タイトルや軸ラベルで日本語を使用することが可能となります。

「データ」では、グラフに表示するデータを定義しています。
今回の場合、X軸とY軸に対応するデータがそれぞれ必要となります。
そのため、X軸とY軸の要素数は一致している必要があります。

「描画」では、グラフを描画します。
ちなみに、縦棒グラフは「plt.bar()」と指定しますが、横棒グラフの場合は「plt.bath()」と指定することで描画が可能です。

「タイトル,軸ラベル」では、グラフのタイトルと軸ラベルを設定しています。

「表示」では、グラフを別ウィンドウで表示します。

3. 実行してみる

作成した処理を実行すると、ウィンドウが表示されます。
定義したデータを元に、グラフが描画されていることが分かります。

おまけ. 3Dグラフの描画

せっかくなので、3Dグラフも表示してみましょう。
以下の処理を作成します。先程と変わった部分(★マーク)について解説していきます。

import matplotlib.pyplot as plt

# 日本語フォント指定
plt.rcParams["font.family"] = 'Meiryo'

# データ ★
x = [1, 2, 3, 4, 5]
y = [2, 3, 4, 5, 6]
z = [5, 6, 2, 8, 7]

# Figureと3Dサブプロットの作成 ★
fig = plt.figure()
ax = fig.add_subplot(projection='3d')

# 描画 (3D散布図) ★
ax.scatter(x, y, z)

# タイトル,軸ラベル ★
ax.set_title('タイトルです')
ax.set_xlabel('X軸ラベルです')
ax.set_ylabel('Y軸ラベルです')
ax.set_zlabel('Z軸ラベルです')

# 表示
plt.show()

「データ」では、グラフに表示するデータを定義しています。
3Dグラフの場合、X軸, Y軸, Z軸に対応するデータがそれぞれ必要となります。

「Figureと3Dサブプロットの作成」では、3Dグラフの初期化を行います。
「plt.figure()」が3Dグラフを描画するためのキャンバス、「fig.add_subplot()」がその中に配置されるプロットを定義します。

「描画 (3D散布図)」では、3Dグラフを描画します。
散布図の他にも、折れ線や棒グラフなどの描画が可能です。

「タイトル,軸ラベル」では、グラフのタイトルと軸ラベルを設定しています。
3DグラフはX, Y, Z軸なので、3軸分をそれぞれ指定します。

作成した処理を実行すると…?
先程と同様に、ウィンドウが表示されました。

3Dグラフの場合、グラフを回転して閲覧することが可能です。

3Dグラフの活用例

Matplotlib」で簡単にグラフを作成できることは分かりました。
しかし、棒グラフや円グラフなどは使う場面も多々あると思いますが、3Dグラフとなると、実際どういうことに活用できるのかなかなか思いつかないもの…。
ここからは、前半に紹介したメリットを踏まえて活用例を考えてみましょう。

活用例1. 定期的なデータの集計

前半でも記載した通り「ある検査が終わったらデータを集計し、グラフを出力する」という処理を行う場合です。
処理さえあれば、あとはデータを準備するだけで何回でも集計が可能です。
仮に、人がExcelで繰り返し集計するとなると、ミスが出たり、ものすごい労力がかかったりします…。

活用例2. XYZ座標を持つデータの可視化

例えば「ある立体の中の異物を検査する」というシステムがあったとしましょう。
当然、異物の位置がどこにあるか把握する必要が出てきますが、座標値だけだと分かりにくい…。
そんなときに3Dグラフを使うと、異物がどこにあるかが分かりやすくなります。

べんぞうくん
べんぞうくん

実はNSIでは過去にそういった処理を行ったことがあるよ。
興味のある人、そんな処理を求めていた人は、ぜひ連絡してね。

最後に

今回は「Matplotlib」というライブラリを使用してグラフを作成してみました。
手軽に様々なグラフが作成できるのは非常に便利ですね。
皆さんも、ぜひお試しください。

ここまで読んでいただき、ありがとうございました。
ご質問・ご要望・ご相談などは、下記お問い合わせフォームからお気軽にご連絡ください。
http://www.net-nsi.co.jp/toiawase.html

べんぞうくん
べんぞうくん

この記事がいいねと思ったらGoodボタンを押してね。

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