Matplotlibは、データのグラフ描画に必要な機能を提供するPythonのライブラリです。
Matplotlib公式サイトはこちら
シンプルなグラフを描画することができます。
Contents
matplotlibをインストール
pipを使ってmatplotlibライブラリをインストールします。
$ python -m pip install -U pip
$ python -m pip install -U matplotlib
インストールされたか確認します。
$ pip list
Package Version
--------------- -------
〜(略)〜
matplotlib 3.4.1
matplotlibをインポート
matplotlibライブラリのpyplotモジュールをインポートして使っていきます。
この中に、描画に使用するメソッドが含まれています。
慣例的に、pltという名前でインポートします。
import matplotlib.pyplot as plt
pyplotAPIとオブジェクト指向API
Matplotlibには、pyplotAPIとオブジェクト指向APIがあります。
一般的に、pyplotAPIの方が手軽に使える一方、オブジェクト指向APIの方が柔軟性が高いです。
pylabAPIというのもありますが、推奨されていないのでpyployAPIかオブジェクト指向APIを代わりに使いましょう。
pyplotAPIによる描画方法
pyplotAPIを使用すると、このように比較的少ない記述でグラフを描画することができます。
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(0, 10, 0.1)
y = np.cos(x)
plt.plot(x, y) # グラフにデータをプロット
plt.show() # グラフを表示
オブジェクト指向APIによる描画方法
オブジェクト指向APIでは、以下のようなグラフの部品をオブジェクトとして管理します。
- figure(グラフのキャンバス)
- axes(グラフ本体)
- axis(軸)
- image(画像)
- legend(判例)
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(0, 10, 0.01)
y = np.cos(x)
fig = plt.figure() # グラフキャンバスを作成
ax = fig.add_subplot(111) # グラフ本体を作成
ax.plot(x, y) # グラフにデータをプロット
plt.show() # グラフ表示
オブジェクト指向APIを用いることで、複数グラフの描画も可能です。
add_subplot関数に渡す引数は、グラフを並べたときの(行の数 列の数 左上から数えたときの順番)です。
これで、ax1〜ax4が左上から右下に向かって順番に配置されます。
import numpy as np
import matplotlib.pyplot as plt
x1 = np.arange(0, 1, 0.01)
y1 = x1**2
x2 = np.arange(0, 1, 0.01)
y2 = x2**3
x3 = np.arange(0, 1, 0.01)
y3 = x3**4
x4 = np.arange(0, 1, 0.01)
y4 = x4**5
fig = plt.figure()
ax1 = fig.add_subplot(221)
ax2 = fig.add_subplot(222)
ax3 = fig.add_subplot(223)
ax4 = fig.add_subplot(224)
ax1.plot(x1, y1)
ax2.plot(x2, y2)
ax3.plot(x3, y3)
ax4.plot(x4, y4)
plt.show()
各種グラフの描画方法
ここでは各種グラフの描画方法を紹介していきますが、基本的にpyplotAPIを使った記法で記述します。
線グラフ
plt.plot(x, y)メソッドで線グラフを描画できます。
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(-10, 10, 0.01)
y = x**2
plt.plot(x, y) # 線グラフをプロット
plt.show()
散布図
plt.scatter(x, y)メソッドで散布図をプロットできます。
import numpy as np
import matplotlib.pyplot as plt
x = np.random.rand(100)
y = np.random.rand(100)
plt.scatter(x, y) # 散布図をプロット
plt.show()
棒グラフ
plt.bar(x, y)メソッドで棒グラフを描画できます。
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(1, 5, 1)
y = x**2
plt.bar(x, y) # 棒グラフをプロット
plt.show()