Python

Matplotlibの使い方

グラフ描画などで利用されるMatplotlibは多機能であり、思った通りに使いこなすまでには少し時間がかかります。そこで、クイックガイドのような形式で、Matplotlibのよく使う機能をまとめておきます。

なお、Matplotlibのサイトにも豊富なギャラリーチュートリアルドキュメントが公開されています。やりたいことを大まかに探したいときはギャラリー、機能の詳細な使い方を調べたいときはドキュメントを参照すると良いと思います。

Matplotlibの導入方法

詳細は本家のInstallingに記載されていますが、Anacondaを使っている場合は以下のコマンドで導入できます。(Anacondaの場合は標準でMatplotlibが入っているので、個別の仮想環境にインストールする場合)

conda install matplotlib

 

簡単な使い方

JupyterLabJupyter 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軸の作成

 

折れ線グラフ

折れ線グラフの基本形

線のスタイルを変更

 

ファイル関連

グラフ画像の保存