このページではmatplotlibを使用して連続的な関数のグラフを描画する方法について解説します。サンプルはOO形式と呼ばれる書き方となっています。figure、axesについて知らない方は事前に以下を一読することをおすすめします。
matplotlib入門
matplotlibの基本 figureとaxes
Contents
関数のグラフ
前回解説した折れ線グラフの離散的な点を十分多くすると関数のグラフを描画することができます。(ですので、この記事はどちらかというとNumpyの説明になりますが)通常、点の数を連続的に見えるほど多くするにはnumpyのlinspaceやarangeを使用します。
以下のコードでは[-5, 5]区間の2次関数のグラフを描画しています。プロットする点の数は100を指定しています。
import numpy as np import matplotlib.pyplot as plt # 対象データ x = np.linspace(-5, 5, 100) y = x ** 2 # figureを生成する fig = plt.figure() # axをfigureに設定する ax = fig.add_subplot(1, 1, 1) # axesにplot ax.plot(x, y) # 表示する plt.show()
Numpy組み込みのユニバーサル関数を使用すると大抵の初等関数を使用することが可能です。
例えば、[-2π, 2π]区間のsin、cosの三角関数のグラフを描画する場合、以下のように記述します。
import numpy as np import matplotlib.pyplot as plt # 対象データ x = np.linspace(-np.pi * 2, np.pi * 2, 100) y1 = np.sin(x) y2 = np.cos(x) # figureを生成する fig = plt.figure() # axをfigureに設定する ax = fig.add_subplot(1, 1, 1) # axesにplot ax.plot(x, y1, c="blue") ax.plot(x, y2, c="red") # 表示する plt.show()

グラフを塗りつぶす
また、fill_betweenを利用すると第3引数で指定した高さのグラフに囲まれた領域が塗りつぶされます。先程のplot部分の後ろに以下を追記してみます。
ax.fill_between(x, y1, y2, color="#30a0ff")
sin(x)とcos(x)に囲まれた部分が塗りつぶされます。