![見出し画像](https://assets.st-note.com/production/uploads/images/137259968/rectangle_large_type_2_85b2fc084e4871a9581ef15d9ca554f0.png?width=1200)
便利ライブラリ matplotlib① 基本的な使い方
以前の投稿でAltairというグラフ化のためのライブラリをご紹介しました。他にもグラフ化を行うライブラリはいくつかあり、代表的なmatplotlibについてまとめていきたいと思います。
準備
ローカル環境で行う場合は、作業ディレクトリを作成し、他のライブラリ同様にpipでインストールすることが出来ます(ターミナルで「pip install matplotlib」)。今回は挙動を確認しながら進めていきたいので、pyファイルではなくノートブック形式(Google colabのようにセル単位で実行する形式)のipynbファイルを作成します。「適当なファイル名.ipynb」でファイルを作成します。
作業ディレクトリに関しては、前回の投稿(VScadeの使い方)を参照してください。
ノートブック形式のファイルを扱うためには、VScadeの拡張機能「Jupyter」が必要になります。設定については過去の投稿(Pythonの開発環境を構築しよう!)を参照してください。
Google colabで行う場合も、pipでライブラリをインストールしますが、先頭に「!」を付けることをお忘れなく。
最初に必要なライブラリをimportします。Excelデータを使用して、グラフを作成していくので、pandasも一緒にimportしておきます。
import matplotlib.pyplot as plt
import pandas as pd
前回の投稿(VScadeの使い方)で、サンプルとして「人口10万人当たり新規陽性者数.csv」ファイルから都道府県ごとに分けてExcelファイルを保存したと思います。その中から「Aichi.xlsx」を使用するので、分かりやすいように作業ディレクトリにコピーしておいてください。
データの確認とデータの整形
ExcelデータをDataFrameとして読み込み、dfの中身を確認してみましょう。
df = pd.read_excel('Aichi.xlsx')
df.head()
![](https://assets.st-note.com/img/1713084873401-R9zxBTacl4.png)
2列のデータが入っていることが確認できました。このdfには2023/5/8までの1209件のデータが入っているので、分かりやすく1ヶ月分のデータ(2021年1月分)を取り出して、グラフ化していきます。
df['Date'] = pd.to_datetime(df['Date'])
df = df.query("'2021-01-01' <= Date < '2021-02-01'")
df.head()
![](https://assets.st-note.com/img/1713085279880-46xknRZr9w.png)
これで、2021年1月分のデータを準備することが出来ました。
matplotlibの基本的な使い方
イメージ
Altairの時と同様に公式ドキュメントにExamplesもあるので、それを見ながら書いていけば良いのですが、前提を知っておくと分かりやすかもしれません。
matplotlibでは、Altairと異なりいきなり図が作られるわけではありません。まず、Figureと呼ばれる台紙を準備します。その台紙の上に軸を用意して、データを載せていく感じをイメージすると分かりやすいかもしれません。オプションで、凡例や補助線を入れたり、色や線の種類を変える事ができます。それぞれの設定がどのパーツに関連しているか理解できると上手く使いこなせます。
![](https://assets.st-note.com/img/1713086367865-u977ckuO1H.png?width=1200)
また、台紙部分は分割することもでき、分割したそれぞれの軸に対して設定を行うことが出来ます。
![](https://assets.st-note.com/img/1713086524330-CYcMqD5vpL.png)
グラフの作成
まずは凝った設定は何もせず、素のグラフを作成してみます。先程準備したdfのDateをx軸、陽性者数をy軸として陽性者数の推移をグラフにしてみましょう。変数xとyにDate列、Aichi列のデータを代入します。
x = df['Date']
y = df['Aichi']
あとは、以下のようにプロットを作成します。
fig, ax = plt.subplots() # 台紙と軸の準備
ax.plot(x, y) # データを渡す
plt.show()
![](https://assets.st-note.com/img/1713087061157-maxeQRtMHN.png)
一応グラフ化できました。しかし、これだとx軸の日付が潰れてしまって分かりにくいですし、何だか味気ないですね。次回以降の投稿で、より見やすいグラフへブラッシュアップしていきたいと思います。
個人的にはAltairが好きですが、matplotlibの方がExcelでグラフを作る感覚に似ていて分かりやすいのかもしれません。