LTspiceのグラフをpythonで綺麗に仕上げる

LTspice

LTSPICEでシミュレーションして出力されたグラフはきちんとした資料を作るには少し見にくい.
そこで今回はpythonを用いて見やすいグラフに変換する方法を紹介する
(左グラフから右グラフに変換).

LTSPICE上でのグラフ

今回は例として下記の回路でトランジスタの[tex: I-V_{\rm ce}]特性をシミュレーションする.

解析条件は以下のように設定

.param Ib = 1m
.dc Vce 0 5 0.01

結果はLTspice上で下記の画像のようになる.
背景が黒で文字が小さくキャプションもついていないのでとても分かりづらい.

LTspiceで表示されるグラフ

pythonでプロットし直す

まず,LTspiceからFile⇒Export data as text で出力したいデータを選択してテキストファイルを出力する.

このテキストファイルを以下のコードと同じディレクトリに置き,以下のコードを実行する.

import numpy as np                                                              
import pathlib
import matplotlib.pyplot as plt

font = {'size' : 16}
plt.rc('font', **font)
plt.rcParams['lines.linewidth'] = 2

read_file = pathlib.Path('single_transistor.txt')
skipRow = 1

if read_file.exists():
    data = np.loadtxt(read_file, skiprows=skipRow, unpack=True)
    value_x = data[0, :]
    fig, ax= plt.subplots(figsize=(12, 8))
    ax.plot(value_x, data[1, :] * 10 ** 3, label='$I_{\mathrm{b}} = 1$ [mA]')
    ax.set_xlabel('$V_{\mathrm{ce}} $ [V]')
    ax.set_ylabel('$I_{\mathrm{c}}$ [mA]')
    ax.grid()
    ax.legend()
    plt.show()
else:
    print('such file is not exist')

コード一部解説

loadtxt

numpyのloadtxt関数を用いることで数値を一気に配列に読み込むことができる.
数値以外は読み込み不可なので最初の数行を飛ばすようにしている.
上記のプログラムでは読み込むファイルに合わせてskipRow を変える.

data = np.loadtxt(read_file, skiprows=skipRow, unpack=True)

texコマンド

label内で$で囲まれた範囲でtexコマンドを使用できる.
上記のコードでは下付き文字をイタリックにしたくないので\mathrmを使っている
({\rm}は使用できないので注意)

pathlib

pythonにおけるファイルやディレクトリのパスを扱えるライブラリ.
このプログラムではpath.exist() でファイルの存在確認のために使っているのみで,どちらかというとpathlibを使うことでディレクトリ関連の変数であることが一発で分かるので,可読性を良くする狙いの方が大きい.

出力結果

出力結果は下記の通りになる.幾分見やすくなった.

pythonで出力したグラフ

コメント

タイトルとURLをコピーしました