1
3

More than 1 year has passed since last update.

PythonでLTSpiceのパラメトリック解析(.step)結果をグラフ化する

Posted at

この記事の応用編。.step param list ~でパラメトリック解析結果が見にくいとお嘆きのアナタ向けの記事。パラメトリック解析結果をグラフィカルかつ直感的に見る方法。

サンプルはこれ。.step param を使って抵抗値を6種類変えたときのCR LPF AC解析。

image.png

LTSpice上でグラフ化するとこうなる。グラフ概形を見るだけなら良いんだけどグラフ上で4番目のパラメータ時のグラフにカーソル当てたいとか言い出すと直感的に操作できなくて大変面倒。

image.png

で、先日の記事の発展形。パラメトリック解析結果をグラフィカルに表示させるためのコードがこれ。先日のコードから微妙に使用しているメソッドが変わっているのは、DeprecationWarningのワーニングがうっとおしくなったから。ついでに過渡解析への使い回しが効きそうなget_x()で周波数の情報を取るようにした。

parametric-graph.py
import ltspice
import pandas as pd
import plotly.express as px
import plotly.graph_objects as go
import numpy as np
from plotly.subplots import make_subplots

filepath = 'Draft2.raw'
l = ltspice.Ltspice(filepath)
l.parse()

# DataFrame変換元ひな形の辞書初期化
data={
      'case':[],
      'freq':[],
      'Gain':[],
      'Phase':[]
      }

# ループでパラメトリック解析結果を仕分けできるように読み込み
for i in range(l.case_count):
  curx = l.get_x(i)
  curi = [i] * len(curx)

  V1 = l.get_data('V(out)',i)

  curGain = 20*np.log10(abs(V1))
  curPhase = 180/np.pi*np.angle(V1)

  data['case'].extend(curi)
  data['freq'].extend(curx)
  data['Gain'].extend(curGain)
  data['Phase'].extend(curPhase)

# DataFrameに変換
df = pd.DataFrame(data)
print(df)

# グラフ表示部 colorオプションでパラメトリック解析結果を色分け
fig_g = px.line(data_frame=df,x='freq',y='Gain',
              title = 'AC analysis bode plot Gain',
              color='case',
              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 Phase',
              color='case',
              log_x=True, log_y=False)
fig_p.show()

グラフ化したJupyter Lab上の実行結果がこちら。パラメトリック解析結果はget_x(case),get_data(case)で個別に取得できるのでDataFrame化しやすいようにcase列を付与する加工をし、plotly expressでcolor='case'で色変え表示させている。

image.png

LTSpice上で直感的に出来なかったPhaseの4番目のパラメータ時のsim結果にカーソルが当たっているのがおわかりいただけるだろうか?

さらに言うとこんなこともできる。
image.png

右側の凡例表示部をクリックすることで、表示させたくない奴だけを選択して非表示にできる。

今日はここまで。

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3