実験の途中結果を表示します
こまんたれぶー。かえるのクーの助手の「井戸中 聖」です。
グラフの枠はできたので、グラフをゆっくり順次更新していきます。
音声のリアルタイム波形表示なら、断然pyqtgraphのほうがいいですが、そこまで高速でなくてよい場合はmatplotlibのほうがなにかと扱いやすそうです。
(ほぼ)リアルタイムでグラフを順次更新していく方法を確認します。
グラフ枠は前回作成したax2の場所を使います。
プロットの枠を起動したあと、グラフの基本設定を行い、前の情報を消さずに書いていきます。
グラフ随時出力のサンプル
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
from time import sleep
def realtime_plot_init(ax):
ax.set_title("Graph") # グラフタイトル
ax.set_xlabel("x") # x軸ラベル
ax.set_ylabel("y") # y軸ラベル
ax.grid() # グリッド表示
ax.set_xlim([0, 10]) # x軸範囲
ax.set_ylim([0, 10]) # y軸範囲
def realtime_plot(x, y, ax):
if x == 0:
line, = ax.plot(x, y, "ro", label="y=x") # (x,y)のプロット ラベルあり
else:
line, = ax.plot(x, y, "ro") # (x,y)のプロット ラベルなし
ax.legend() # 凡例表示
plt.draw() # グラフの描画(なくても描画するが、気分的にいれる)
plt.pause(0.1) # 更新時間まち
if __name__ == '__main__':
fig = plt.figure(figsize=(5, 9)) #横、縦のインチ指定です
gs = gridspec.GridSpec(17, 9) #縦18, 横10のグリッドに分割します。
ax2 = plt.subplot(gs[10:15, 0:5]) #縦3インチ横3インチ
realtime_plot_init(ax2) #グラフの軸や範囲の設定
for i in range(11):
realtime_plot(i, i, ax2) #順次プロット
sleep(1)
sleep(10)
実行するとこんな風になります。
単純なプロットグラフでない場合は、その都度全部かきなおしたい場合があります。
そのときはax.cla()をします。
ラベルやタイトル情報も全部クリアされます。
簡単なグラフならいいですが、複雑なグラフは実験プログラムに組み込むと、実験スピードが低下します。
そこで、次はグラフをマルチプロセスで書く方法を確認します。
(つづく)
今日の格言
「井の中の蛙、大海を知らず。されど宇宙を識る。」
このブログのモチーフみたいですが、残念ながら格言だけで、かえるのクーは宇宙物理に疎いんです。。。