#Pythonで学ぶ制御工学< グラフ作成へ向けて >
はじめに
基本的な制御工学をPythonで実装し,復習も兼ねて制御工学への理解をより深めることが目的である.
その第7弾として「グラフ作成へ向けて」を扱う.
グラフ作成へ向けて
ここでは,次回以降必要になってくるグラフ作成において,便利になってくるであろうものを関数化し,以降使えるようにする.関数化することで,毎度細かな設定を行う手間が省ける.なお,ここで記述するのは,参考書にあったものであり,絶対的なものではない.あくまでもその参考書の説明の中で手間を省くために用意されているものである.しかしながら,設定の方法を学ぶことができ,今後自分好みや,ある基準に従った仕様でグラフ作成する際に,役立つ知識となるであろうと思い,ここに記録することとする.
関数の定義
for_plot.py
"""
2021/02/25
@Yuya Shimizu
図を整えるための関数定義
"""
# グラフをプロットするときの線種を決めるジェネレータ
def linestyle_generator():
linestyle = ['-', '--', '-.', ':']
lineID = 0
while True:
yield linestyle[lineID]
lineID = (lineID + 1) % len(linestyle)
# グラフを整える関数
def plot_set(fig_ax, *args):
fig_ax.set_xlabel(args[0]) #x軸のラベルを1つ目の引数で設定
fig_ax.set_ylabel(args[1]) #y軸のラベルを2つ目の引数で設定
fig_ax.grid(ls=':') #グラフの補助線を点線で設定
if len(args) == 3:
fig_ax.legend(loc=args[2]) #凡例の位置を3つ目の引数で設定
# ボード線図を整える関数
def bodeplot_set(fig_ax, *args):
#ゲイン線図のグリッドとy軸ラベルの設定
fig_ax[0].grid(which='both', ls=':')
fig_ax[0].set_ylabel('Gain [dB]')
#位相線図のグリッドとx軸, y軸ラベルの設定
fig_ax[1].grid(which='both', ls=':')
fig_ax[1].set_xlabel('$\omega$ [rad/s]')
fig_ax[1].set_ylabel('Phase [deg]')
#凡例の表示
if len(args) > 0:
fig_ax[1].legend(loc=args[0]) #引数が1つ以上:ゲイン線図に表示
if len(args) > 1:
fig_ax[0].legend(loc=args[1]) #引数が2つ以上:位相線図にも表示
感想
今回は直接制御工学についての学習ではなかったが,グラフをきれいに整えるものを関数化するというのは,この教材にとどまらず,以降,何かしらグラフを扱っていく中で役立つことにはなってくるはずである.
参考文献
Pyhtonによる制御工学入門 南 祐樹 著 オーム社