Matplotlib

Lesson 12 の 12.3〜12.5 では Matplotlib を使ったグラフ描画、つまりデータの可視化を行います。Matplotlib は Python では極めてポピュラーな可視化ツール(グラフ描画ツール)ですが、標準的な Python 環境には含まれておらず、ユーザがインストールする必要があります。

まず資料

Matplotlib プロジェクトのページは https://matplotlib.org/ です。トップページを以下に示しますが、赤い矢印部分のリンクなどを見ると、どのようなグラフの描画ができるか分かると思います。こんな形のグラフで出したい、どんな形で出せるだろう、と思った時は参照すると良いです。

image-20231117205619705

pip によるパッケージ管理

様々なインストール方法があるとは思いますが、ここでは Python 環境にデフォルトで入っていて、最もシンプルな pip コマンドによるインストール方法を示します。

多様な環境管理ツール
Python には pyenv や anaconda など多様な環境管理ツールが並立している上に、それらを一つのマシンにインストールして切り替えながら使うようなことが困難、という状況にあります。便利なツールがあることは事実ですが、例えばこんな記事 など、いろいろ難しいことがある(=不慣れな人には荷が重い)と分かる資料を見つけられるでしょう。

利用するコマンドは pip3 です。pip3 list とコマンド入力することで、現在インストールされているパッケージの一覧を見ることができます。

image-20231117210605760

黄緑色の WARNING (警告)が気になりますね。

WARNING: You are using pip version 21.2.4; however, version 23.3.1 is available. You should consider upgrading via the ‘/Library/Developer/CommandLineTools/usr/bin/python3 -m pip install –upgrade pip’ command.**

これは macOS 標準の Python 環境は最新版に比べていくらか前のものがインストールされており、そこに含まれていた pip3 コマンドのバージョン(21.2.4)が古いもので、現在は 23.3.1 が利用可能だから、アップグレードを検討すべきだ、というものです。

この教材を作成している教員は過去にこの pip のバージョンを無思慮に上げてしまい、各種パッケージのバージョン不整合に悩まされた経験があるため、この科目では pip や pyhon そのもののバージョンは macOS 標準のものからあまりアップグレードしない方向で運用します。この警告はpipを使う度に出るでしょうが、気にしないでください。

Matplotlib のインストール

未インストールであることの確認

まず matplotlib がインストールされていないことを確認しましょう。インタラクティブモードで Python を起動して、matplotlib を import してください。インストールされていることの確認だけならコマンドは import matplotlib だけでも良いのですが、教科書 p.347 に合わせて、import matplotlib.pyplot as plt としましょうか。

まだインストールされていない状態であれば、以下のようにエラーとなるはずです。

yasuda@Slack 14 % python3
....(メッセージ略)
>>> import matplotlib.pyplot as plt   <<< コマンド入力
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'matplotlib'  <<< モジュールが見つからない、とエラー
>>> 

もしエラーメッセージが出なかった場合は、何らかの理由で既に matplotlib が入っています。

(心当たりがない場合は「自分の環境をコントロールできないままイジっている」可能性が高いです。そのうちに Python 実行環境を壊してしまいそうで怖いです、、、)

pip によるインストール操作

pip3 install --prefer-binary matplotlib とコマンド実行すると、Matplotlib がダウンロードされ、インストールされます。実行時のログのはじめの方をつけておきます。ダウンロード作業を含めて何分か時間が掛かるかもしれません。

yasuda@Lily 04 % pip3 install --prefer-binary matplotlib
Defaulting to user installation because normal site-packages is not writeable
Collecting matplotlib
  Downloading matplotlib-3.8.1-cp39-cp39-macosx_11_0_arm64.whl (7.5 MB)
     |████████████████████████████████| 7.5 MB 4.2 MB/s 
Collecting importlib-resources>=3.2.0
  Downloading importlib_resources-6.1.1-py3-none-any.whl (33 kB)
Collecting fonttools>=4.22.0
..... 続く

最後に以下のように Successfully installed… と表示されておればインストールは成功です。

image-20231117211710253

様々なパッケージがインストールされたことがレポートされていますが、そこに matplotlib が含まれていることがわかります。

パッケージリストの再確認

pip3 list とコマンド入力して、インストールされているパッケージの一覧を再確認します。先ほど(Matplotlib のインストール前)に比べてずいぶん増えていますね。

yasuda@Lily 04 % pip3 list
Package             Version
------------------- -------
altgraph            0.17.2
contourpy           1.2.0
cycler              0.12.1
fonttools           4.44.3
future              0.18.2
importlib-resources 6.1.1
kiwisolver          1.4.5
macholib            1.15.2
matplotlib          3.8.1
numpy               1.26.2
packaging           23.2
Pillow              10.1.0
pip                 21.2.4
pyparsing           3.1.1
python-dateutil     2.8.2
setuptools          58.0.4
six                 1.15.0
wheel               0.37.0
zipp                3.17.0
yasuda@Lily 04 % 

matplotlib はもちろん含まれていますが、numpy など多くのパッケージが追加されたことがわかります。

動作確認

インポートできるか

インタラクティブモードで Python を起動して、matplotlib を import してください。インストールされていることの確認だけならコマンドは import matplotlib だけでも良いのですが、教科書 p.347 に合わせて、import matplotlib.pyplot as plt としましょうか。

yasuda@Slack 14 % python3                                
....(メッセージ略)
>>> import matplotlib.pyplot as plt   <<< コマンド入力
>>>                                   <<< 何も言わず次のコマンドプロンプトが出たらOK

注意:初回の起動は Matplotlib is building the font cache; this may take a moment. と表示されて1分程度待たされるかも知れません。

もし matplotlib が適切にインストールされていない場合は、以下のようなエラーメッセージが出ます。

yasuda@Slack 14 % python3
....(メッセージ略)
>>> import matplotlib.pyplot as plt   <<< コマンド入力
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'matplotlib'  <<< モジュールが見つからない、とエラー
>>> 

pip3 によるインストール作業が「Successfully」で完了しており、かつコマンドのタイプミスでないことが確認できれば、あまり変なことをせずに担当教員と相談するのが良いでしょう。

試しにグラフを作ってみる

import できたら、それに続けて以下のように入力して動作確認をしましょう。小さな棒グラフを作る手続きです。

>>> x = ["a", "b", "c", "d"]             <<< x に横軸のラベルを用意(第一要素のラベルは "a")
>>> height = [10, 20, 30, 40]            <<< height に縦軸の値を用意(第一要素の値は10)
>>> plt.bar(x, height)                   <<< x と height を使って棒グラフを作成
<BarContainer object of 4 artists>       <<< オブジェクトができた、という報告
>>> 

この plt.bar(x, height) が正しく実行できたときは、Mac の Dock (Finder 画面の下にあるアプリケーションのアイコンが並んでいるところ)の右端あたりに、以下のような Matplotlib のアイコンが現れます。

image-20231118173410916

そうではなく、plt.bar(x, height) を実行した時に以下のようなエラーが出たら、import の手続きを確認してください。タイプミスか、あるいは Matplotlib のインストールに失敗しています。

>>> plt.bar(x, height)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'plt' is not defined
>>> 

作成された(はず)のグラフを表示

続けて plt.show() とします。

>>> plt.show()

すると画面上にグラフが新しいウィンドウとして開くでしょう。このグラフ・ウィンドウの左下隅のアイコンをクリックすると、保存や拡大・調整などが可能です。

image-20231118173631115

このウィンドウが開いている間、インタラクティブモードでは plt.show() 処理の実行中となっているため、Python インタプリタのプロンプト「 >>> 」は表示されず、次の入力もできません。グラフ・ウィンドウを(左上の赤い「閉じる」ボタンをクリックしてウィンドウを閉じると、ようやくプロンプトが表示されます。

>>> plt.show()
>>> 

おつかれさまでした

これで Matplotlib がインストールされ、正常に動作することが確認できました。