【Python】Jupyter NotebookでMatplotlibを使う

jupyter_notebook_matplotlib

データビジュアライゼーション(データの可視化)を筆頭に、コードのドキュメント化や数値モデリングなど、さまざまな機能を持つJupyter Notebook。その最大の利点はやはりデータの可視化であります。データの可視化といえばグラフ描画ライブラリ、Matplotlibというわけで、本記事では相性抜群のJupyter NotebookとMatplotlibの組み合わせをお届けします。

Jupyter NotebookでMatplotlibを使う準備

グラフ描画の準備はできていますか?

  • Jupyter Notebookのインストール
  • Matplotlibのインストール

Jupyter Notebookのインストールに関してはこちらの記事を参照してください。

Matplotlibのインストールは、ターミナル(コマンドプロンプト)からであれば、pipでインストールします。

pip install matplotlib

また、jupyter notebook上でインストールするときは、!pipでインストールします。

!pip install matplotlib

Jupyter NotebookにおけるMatplotlibの使い方

Jupyter NotebookでMatplotlibを使うと、普通にPythonスクリプトでMatplotlibを使うのに比べて、素早くデータを可視化することができます。

基本のMatplotlibの使い方

Jupyter NotebookでのMatplotlibによるグラフ描画の手順は基本的に3つです。

  1. モジュールのインポート
  2. グラフの定義
  3. グラフにデータをセット
import matplotlib.pyplot as plt #モジュールのインポート

Figure, ax = plt.subplots() #グラフの定義

x = [1,2,3,4,5] #横軸用:データ
y = [2,4,6,8,10] #縦軸用:データ
ax.plot(x, y) #データのプロット

このコードを実行すると、直ちにグラフが描画されます。

Jupyter_notebook_matplotlib
Jupyter Notebookにおけるグラフの描画結果

モジュールのインポートは、matplotlib.pyplotをpltとして使えるようにするのが一般的です。

次に、subplots()メソッドを使って、グラフを定義しています。グラフの定義の方法はいくつかありますが、上記のようにするのが公式サイトが推奨している方法です。
Matplotlibでのグラフ描画の概念に、「親グラフ」と「子グラフ」というものがあります。例えば、4つのグラフを1つにまとめたいとき、1つにまとまったグラフ全体は「親グラフ」であり、それぞれのグラフは「子グラフ」になります。グラフが1つでいい時は、上記のように書くのが普通です。

例えば、子グラフを4つ作りたい場合は、次のように書きます。

Figure = plt.figure() #全体のグラフを作成
ax1 = Figure.add_subplot(2,2,1) #1つ目のAxを作成
ax2 = Figure.add_subplot(2,2,2) #2つ目のAxを作成
ax3 = Figure.add_subplot(2,2,3) #3つ目のAxを作成
ax4 = Figure.add_subplot(2,2,4) #4つ目のAxを作成

また、データのプロットは子グラフに対してプロットをするので、ax.plot(x, y)としています。plot()メソッドを使えば、グラフにデータをプロットできます。第一引数に横軸用のデータ、第二引数に縦軸用のデータを渡します。

Jupyter Notebookでは、これだけのコードでグラフが描画されます。通常はさらにコードを書かないと表示はされません。

ちょっと発展したMatplotlibの使い方

Jupyter Notebook、Matplotlib、Pandas(表計算ライブラリ)、Numpy(数値計算ライブラリ)はそれぞれお互いに非常に相性が良く作られています。

例えば、Pandasのデータフレームは簡単にグラフにすることができます。

import matplotlib.pyplot as plt #モジュールのインポート
import pandas as pd #モジュールのインポート

x = [1,2,3,4,5] #x軸用:プロットするデータ
y = [2,4,6,8,10] #y軸用:プロットするデータ

#Pandasのデータフレーム
df = pd.DataFrame(y, x)

Figure, ax = plt.subplots() #グラフの定義

ax.plot(df) #グラフのプロット

すると出力は次のようになります。

Matplotlib_pandas
Pandasのデータフレームをプロット

グラフのカスタマイズ

さらに、Jupyter NotebookにおいてMatplotlibを使う際の、グラフのカスタマイズ方法についての詳しい記事を書いているので、ぜひ参考になさってください。

参考書籍:「Pythonによるデータ分析入門 第2版