ショートカットキーでのPyplotリアルタイムプロットのコントロール
前回紹介したPyplotでのリアルタイムプロット更新において、キー入力で更新の停止、再開などを制御する方法
簡易コード
前回コードで、pyplot.subplots()
で生成されたFigure
オブジェクトのcanvas
にmpl_connect()
でイベント関数をバインドします
...
class RealtimePlot:
def __init__(self):
self.fig, self.ax = plt.subplots()
...
self.update = True # 描画更新の制御フラグ
self.fig.canvas.mpl_connect('key_press_event', self.key_press) # キーイベントをバインド
self.ani = FuncAnimation(self.fig, self.update_data,
init_func=self.plot_init,
frames=None)
plt.show()
...
def update_data(self, _):
self.receive_data_dummy()
# self.updateがFalseの時は描画を停止 (データ受信は継続)
if self.update: # Trueの時のみ描画を更新
....
return self.ln.values()
...
def key_press(self, event):
if event.key == ' ': # スペースで停止
self.update = False # 描画停止
elif event.key == 'ctrl+ ': # CTRL + スペースで再開
self.update = True # 描画更新
event.key
は入力されたキーの文字がセットされています。例にあるようにCtrl + a
などの修飾キーも使用可能です
またmpl_connect()
でバインドできるイベントしては、キープレス以外にも、キーリリース(key_release_event
)やマウスイベントなどがあります。
詳細は公式ドキュメントを参照してください
最近のコメント