matplotlibの備忘録
pythonでグラフを描くライブラリー「matplotlib」の使用法を、忘れないようにまとめておきたいと思います。
pythonでグラフを描かせたいときに便利なのがmatplotlibというライブラリです。matplotlibを使えばPythonでデータをグラフにプロットできるようになります。簡単な関数を使って、(私自身の)matplotlibの復習です。
2次関数
import matplotlib.pyplot as plt import numpy as np import japanize_matplotlib x = np.linspace(-10, 10, 1000000) y = x**2 plt.plot(x, y) plt.show()
「matplotlib」の「pyplot」をインポートします。「 as plt」によって、pyplotと入力する代わりに、pltとして使用できます。計算結果や実験結果をグラフなどの図で表現できると分かりやすくなります。そんな時に便利なのがmatplotlibというライブラリです。matplotlibを使えばPythonでデータをグラフにプロットできるようになります。
「NumPy」はプログラミング言語であるPythonの拡張モジュールです。NumPyを利用することでPythonでの数値計算をより高速に、効率的に行うことができるようになります。
「japanize_matplotlib」は、matplotlib を日本語表示対応させるモジュールです。
「np.linspace」は、線形に等間隔な数列を生成する関数です。np.linspace(-10, 10, 1000000)の場合、-10から10の間を、1000000分割します。
import matplotlib.pyplot as plt import numpy as np (import japanize_matplotlib) #関数に関する記述 plt.plot(x, y) plt.show()
上の形式が、グラフを描くときの最も基本的な形です。(オブジェクト指向の記述は少し異なります。)
三角関数(SIN)
import matplotlib.pyplot as plt import numpy as np import japanize_matplotlib x = np.linspace(np.pi*(-4), np.pi*4, 1000000) y = np.sin(x) plt.plot(x, y) plt.show()
「np.linspace(np.pi*(-4), np.pi*4, 1000000)」の部分が二次関数と異なりますが、定義域を-4πから4πとしています。
三角関数(COS)
import matplotlib.pyplot as plt import numpy as np import japanize_matplotlib x = np.linspace(np.pi*(-4), np.pi*4, 1000000) y = np.cos(x) plt.plot(x, y) plt.show()
「sin」を「cos」に変更しただけです。
三角関数(TAN)
import matplotlib.pyplot as plt import numpy as np x = np.linspace(np.pi*(-4), np.pi*4, 1000000) y = np.tan(x) plt.axes().set_aspect('equal') plt.xlim(-6, 6) plt.ylim(-6, 6) plt.plot(x, y) plt.show()
数学的には、π/2や3π/2など4ヶ所にある縦線は、引いたらダメだと思うのですが、折れ線グラフを使っているためお許しください。また、自動で目盛を表示させると、原点付近の変化が全くわからなくなるので、縦軸横軸共に-6~6までにしています。「plt.axes().set_aspect('equal')」は、アスペクト比(縦横の比)を等しくしています。
アスペクト比を指定する行、7行目をコメントアウトすると上のようになります。
指数関数
import matplotlib.pyplot as plt import numpy as np x = np.linspace(0,10, 1000000) y = np.exp(x) #plt.axes().set_aspect('equal') #plt.xlim(-6, 6) #plt.ylim(-6, 6) plt.plot(x, y) plt.show()
import matplotlib.pyplot as plt import numpy as np import japanize_matplotlib #関数を記述 x = np.linspace(np.pi*(-2),np.pi*2, 1000000) y_1 = np.sin(x) y_2 = np.cos(x) y_3 = np.tan(x) plt.xlim([-6, 6]) plt.ylim([-3, 3]) #plt.axes().set_aspect('equal', 'datalim') plt.plot(x, y_1, label='sin') plt.plot(x, y_2, label='cos') plt.plot(x, y_3, label='tan') # 目盛の表示 plt.grid(which='major', color='gray', linestyle='--') plt.grid(which='minor', color='gray', linestyle='--') # ラベルを表示 plt.legend() plt.show()
sin,cos,tanのグラフを同一の座標に表示させると共に、目盛り線と凡例を表示しました。
今日はここまで 後日続きをアップします。