三角関数などの数学でいうところの関数のグラフ表示です。基本的には2つの方法があります。
①ひとつの座標に複数の関数を描画する
sinとexpの関数を同じ座標で描画しています。 ソースです。
#-*- coding: utf-8 -*-
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.style as mplstyle
import matplotlib
#以下はubuntuのフォント
matplotlib.rc ('font', family='Noto Sans CJK JP')
# Create some mock data
t = np.arange(0.01, 2.0, 0.01)
data1 = np.exp(t)
data2 = np.sin(2 * np.pi * t)
fig, ax1 = plt.subplots(figsize=(4.0, 3.0), tight_layout = True)
color = 'red'
ax1.set_xlabel('time (s)')
ax1.set_ylabel('exp', color=color)
ax1.plot(t, data1, color=color)
ax1.tick_params(axis='y', labelcolor=color)
ax2 = ax1.twinx() # X軸を共有するax2を作成
color = 'blue'
ax2.set_ylabel('sin', color=color)
ax2.plot(t, data2, color=color)
ax2.tick_params(axis='y', labelcolor=color)
plt.savefig('sin_exp.png')
plt.show()
数値計算にはnumpyが必須です。 t = np.arange(0.01, 2.0, 0.01)
0.01から1.99まで0.01刻みのx座標のデータが作成されます。 0.001,0.002,0.003,...........1.999
data1 = np.exp(t)
あっさり1行で描かれていますが、data1は exp(0.001),exp(0.001),,,,,,,,exp(1.999)
の配列になっています。 data1はnp.expの計算結果が配置されます。
sinを描くax2については、 ax2 = ax1.twinx() # X軸を共有するax2を作成
以後はax1と同様です。
次は2つ座標に描画する例です。
上の図はcosカーブをexp(-t)で減衰させるグラフです。下はcosカーブを破線で表示したグラフです。
ソースです。
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.style as mplstyle
# mplstyle.use((['dark_background', 'ggplot', 'fast']))
def f(t):
return np.exp(-t) * np.cos(2*np.pi*t)
t1 = np.arange(0.0, 5.0, 0.1)
t2 = np.arange(0.0, 5.0, 0.02)
plt.figure(figsize=(6.0, 4.5))
plt.subplot(211)
plt.plot(t1, f(t1), 'bo', t2, f(t2), 'k')
plt.subplot(212)
plt.plot(t2, np.cos(2*np.pi*t2), 'r--')
plt.savefig('2cos_graph.png')
plt.show()
ここで注目することは、
lt.plot(t1, f(t1), 'bo', t2, f(t2), 'k')
t1, f(t1), 'bo,
0.1感覚でマーカーを描画します。
t2, f(t2), 'k'
0.02感覚でcosカーブを描画します。理由はマーカーと同じ間隔で描画すると滑らかな曲線にならないためです。 この例のように、
xの要素とyの要素を複数ならべてグラフを描くことができます。
下の赤いcosを描画した例です。 |