
リンク
matplotlibを使えばpythonで簡単にグラフを描画するすることが出来ます。以下matplotlibの使い方について、まとめます。
関数の描画
まずは、2次関数のグラフを描画します。 Jupyter Notebook を使う場合は先頭に
%matplotlib inline
と書く必要があります。
dxはxの離散間隔で小さくすればするほどなめらかなグラフが描けます。for文中でxを-10~10まで増加させていったときのx,yの値をlistに付け加えていきます。
import matplotlib.pyplot as plt
x_list = []
y_list = []
dx = 0.01
for i in range(int(-10/dx),int(10/dx+1)):
x = dx*i
y = x**2 + x + 1
x_list.append(x)
y_list.append(y)
plt.plot(x_list,y_list,color ='b')
plt.title('y=f(x)') # タイトル
plt.xlabel('x') # x軸のラベル
plt.ylabel('y') # y軸のラベル
plt.show()

複数のグラフを重ねて表示
plt.plot()を複数書けばグラフを重ねて描画することが出来ます。label=' 'で凡例を指定できますが、そのときplt.legend()を書くようにしましょう。
import matplotlib.pyplot as plt
import numpy as np
x_list = []
y1_list = []
y2_list = []
dx = 0.01
for i in range(int(-3/dx),int(3/dx+1)):
x = dx*i
y1 = x**2 + x + 1
y2 = np.sin(x)
x_list.append(x)
y1_list.append(y1)
y2_list.append(y2)
plt.plot(x_list,y1_list,label = 'quadratic',color ='b')
plt.plot(x_list,y2_list,label = 'sin',color ='r')
plt.title('y=f(x)') # タイトル
plt.xlabel('x') # x軸のラベル
plt.ylabel('y') # y軸のラベル
plt.legend() # 凡例を表示
plt.show()

複数のグラフを並べて描画
複数のグラフを並べて表示させることも出来ます。以下の例では縦に2列、横に3列のグラフを表示させます。そのままだとグラフが重なるのでplt.tight_layout()を入れると改善されます。
import matplotlib.pyplot as plt
import numpy as np
x_list = []
y1_list = []
y2_list = []
y3_list = []
y4_list = []
y5_list = []
y6_list = []
dx = 0.01
def f1(x):
y = x**2
return y
def f2(x):
y = np.sin(x)
return y
def f3(x):
y = x**3
return y
def f4(x):
e = 2.71
y = (e**x + e**(-x))/2
return y
def f5(x):
r = 3
if -r < x < r:
y_p = (r**2-x**2)**(1/2)
y_m = -(r**2-x**2)**(1/2)
else:
y_p = 0
y_m = 0
return y_p,y_m
def f6(x):
if x**2<9:
y_p = abs(x)**(2/3)+(9-x**2)**(1/2)
y_m = abs(x)**(2/3)-(9-x**2)**(1/2)
else:
y_p = 2
y_m = 2
return y_p,y_m
for i in range(int(-3/dx),int(3/dx+1)):
x = dx*i
y1 = f1(x)
y2 = f2(x)
y3 = f3(x)
y4 = f4(x)
y5 = f5(x)
y6 = f6(x)
y1_list.append(y1)
y2_list.append(y2)
y3_list.append(y3)
y4_list.append(y4)
y5_list.append(y5)
y6_list.append(y6)
x_list.append(x)
fig = plt.figure(figsize=(10,5))
plt1 = fig.add_subplot(2, 3, 1)
plt1.plot(x_list,y1_list,color='b')
plt1.set_xlabel('x')
plt1.set_ylabel('y')
plt1.set_title('f1')
plt2 = fig.add_subplot(2, 3, 2)
plt2.plot(x_list,y2_list,color='r')
plt2.set_xlabel('x')
plt2.set_ylabel('y')
plt2.set_title('f2')
plt3 = fig.add_subplot(2, 3, 3)
plt3.plot(x_list,y3_list,color='y')
plt3.set_xlabel('x')
plt3.set_ylabel('y')
plt3.set_title('f3')
plt4 = fig.add_subplot(2, 3, 4)
plt4.plot(x_list,y4_list,color='m')
plt4.set_xlabel('x')
plt4.set_ylabel('y')
plt4.set_title('f4')
plt5 = fig.add_subplot(2, 3, 5)
plt5.plot(x_list,y5_list,color='g')
plt5.set_xlabel('x')
plt5.set_ylabel('y')
plt5.set_title('f5')
plt6 = fig.add_subplot(2, 3, 6)
plt6.plot(x_list,y6_list,color='c')
plt6.set_xlabel('x')
plt6.set_ylabel('y')
plt6.set_title('f6')
plt.tight_layout()
plt.show()

リンク

コメント