matplotlib 関数のグラフ

このページではmatplotlibを使用して連続的な関数のグラフを描画する方法について解説します。サンプルはOO形式と呼ばれる書き方となっています。figure、axesについて知らない方は事前に以下を一読することをおすすめします。
matplotlib入門
matplotlibの基本 figureとaxes

関数のグラフ

前回解説した折れ線グラフの離散的な点を十分多くすると関数のグラフを描画することができます。(ですので、この記事はどちらかというとNumpyの説明になりますが)通常、点の数を連続的に見えるほど多くするにはnumpyのlinspaceやarangeを使用します。

NumPy入門 配列生成

2017年8月20日

以下のコードでは[-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組み込みのユニバーサル関数を使用すると大抵の初等関数を使用することが可能です。

NumPy入門 代表的なユニバーサル関数

2017年10月22日

例えば、[-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)に囲まれた部分が塗りつぶされます。