グラフ描画などで利用されるMatplotlibは多機能であり、思った通りに使いこなすまでには少し時間がかかります。そこで、クイックガイドのような形式で、Matplotlibのよく使う機能をまとめておきます。
なお、Matplotlibのサイトにも豊富なギャラリーやチュートリアルやドキュメントが公開されています。やりたいことを大まかに探したいときはギャラリー、機能の詳細な使い方を調べたいときはドキュメントを参照すると良いと思います。
Contents
Matplotlibの導入方法
詳細は本家のInstallingに記載されていますが、Anacondaを使っている場合は以下のコマンドで導入できます。(Anacondaの場合は標準でMatplotlibが入っているので、個別の仮想環境にインストールする場合)
conda install matplotlib
簡単な使い方
JupyterLabやJupyter Notebookから利用する場合と、Pythonのソースコードから利用する場合で、グラフの表示方法が少し異なります。
JupyterLabなどを利用している場合は%matplotlib inline
と記載が必要です。この記載を忘れるとグラフが表示されないので注意してください。
%matplotlib inline import matplotlib.pyplot as plt import numpy as np x = np.linspace(-5, 5) # -5~5までの数値(等差数列)を作成 plt.plot(x, np.sin(x)) # -5~5のsinグラフを描画 plt.show() #JupyterLab/JupyterNoteの場合は無くても良い
import matplotlib.pyplot as plt import numpy as np x = np.linspace(-5, 5) # -5~5までの数値(等差数列)を作成 plt.plot(x, np.sin(x)) # -5~5のsinグラフを描画 plt.show() # グラフを表示

JupyterLabやJupyter Notebookを使っている場合は、plt.show()
が無くてもグラフが描画されます。ただしコードをPythonのソースにコピー&ペーストした時にグラフが表示されなくなるので、JupyterLabなどを利用している場合も、plt.show()
と書くようにしておくと良いかもしれません。
NumPy
NumPyは数値計算を扱う別パッケージになりますが、Matplotlibとセットで良く利用されます。ここではグラフ描画の時によく利用するNumPyの機能を紹介します。
等差数列はグラフ軸の範囲や、グラフ関数に与えるxの値で頻繁に利用します。
import numpy as np # 等差数列を作成(要素数を指定) np.linspace(-1, 1) # -1~1の範囲で要素数 50個の等差数列 np.linspace(-1, 1, 200) # -1~1の範囲で要素数200個の等差数列 # 等差数列を作成(公差を指定) np.arange(10) # 0≦n<10の範囲で公差1の等差数列 [0,1,2,..., 9] np.arange(1, 11) # 1≦n<11の範囲で公差1の等差数列 [1,2,3,...,10] np.arange(1, 11, 2) # 1≦n<11の範囲で公差2の等差数列 [1,3,5,7,9]
日本語を使う方法
デフォルトのフォントを日本語に変更する方法
注意点:フォントキャッシュが存在する場合は削除しないと反映されない場合あり。
ピンポイントで日本語のフォントを使う方法
# family='フォント名' でフォントを指定可能(fontfamilyでも可能) plt.xlabel("入力値", family='Ricty') plt.ylabel("出力値", family='Ricty') plt.title("グラフタイトル", family='Ricty')
グラフ全体
グラフサイズの設定
# figsizeでグラフ全体のサイズを設定 plt.figure(figsize=(10,10)) # dpiで解像度を変更(グラフの線や文字も大きくなる) plt.figure(dpi=144)
グラフタイトルの設定
# グラフタイトルの設定 plt.title("Graph title")
グリッドの設定
# グリッド表示 plt.grid() # グリッドの色や太さも設定可能 plt.grid(color='#CCCCCC', lw=1.5)
凡例の表示
# 凡例の表示(各データをplotした後に呼び出し) plt.legend()
グラフの分割
グラフのレイアウトを自動調整する
グラフやラベルが重ならないように自動調整可能です。
# グラフのレイアウトを自動調整する plt.tight_layout()
グラフ軸
X,Y軸のラベル設定
# X,Y軸のラベル設定 plt.xlabel("x label") plt.ylabel("y label")
X,Y軸の範囲設定
X,Y軸のメモリ幅設定
メモリ軸の種類設定(Logなど)
第2軸の作成
折れ線グラフ
折れ線グラフの基本形
線のスタイルを変更
ファイル関連
グラフ画像の保存