LTSPpiceでSIMした結果をPythonで扱うltspiceモジュールを使ってAC解析結果をグラフ化する備忘録
解析したのは、この回路をSIMした出力ファイルDraft1.raw
ltspiceモジュール公式ページのサンプルが過渡解析用だったのでAC解析結果の複素数を処理するコードを足している。
LTSpice上でカーソル当てるようにして結果を閲覧したいのでplotly expressでグラフ化した。
plotly expressでグラフ化する都合上pandasも使っている。
import ltspice
import pandas as pd
import plotly.express as px
import numpy as np
filepath = 'Draft1.raw'
l = ltspice.Ltspice(filepath)
l.parse()
V1 = l.get_data('V(out)')
df = pd.DataFrame(
data={
'freq':l.getFrequency(),
'Gain':20*np.log10(abs(V1)),
'Phase':180/np.pi*np.angle(V1)
}
)
fig_g = px.line(data_frame=df,x='freq',y='Gain',
title = 'AC analysis bode plot',
log_x=True, log_y=False)
fig_g.show()
fig_p = px.line(data_frame=df,x='freq',y='Phase',
title = 'AC analysis bode plot',
log_x=True, log_y=False)
fig_p.show()
実行結果はこれ。Jupyterlab上で表示した結果のスクショ。カーソルを当てたところの値を表示してくれるplotlyは神だと思う。
ただ、matplotlibと比べるとグラフを書くのに最低限必要なコードが増えるので、コード量少なくてもグラフを書けるplotly expressは大変有り難い。
グラフのカスタマイズに関する情報はこの2つぐらいを参照
温度や電圧を振ったときのグラフをプロットするfacetの扱いに関するサンプル
https://plotly.com/python/facet-plots/
plotly expressの描画オプションに関する日本語情報
http://oyoyonochichi.coolblog.jp/Python/plotly/express_line2.html