pythonでグラフを描く(matplotlibの使い方)

スポンサーリンク
スポンサーリンク
6つのグラフ

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つのグラフ

複数のグラフを並べて描画

複数のグラフを並べて表示させることも出来ます。以下の例では縦に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()

6つのグラフ

コメント