Wizard Notes

音楽信号解析の技術録、作曲活動に関する雑記

Python: matplotlibを使ったリアルタイムプロットのフレームレート(FPS) に関する調査

Pythonで安定的にリアルタイムプロットを実現するライブラリとしては PyQtGraph がありますが、手軽にmatplotlibでプロットしたいことも割とあります。

Web上の様々な記事でmatplotlibはリアルタイムプロットに不向きだと言われていますが、実際にどの程度までリアルタイムプロットができるか調査してみました。

今回の調査では、pyplot.plot()pyplot.imshow()に対して、サイズの異なるデータを与えて平均FPS等を算出してみました。

注意として、matplotlibのリアルタイムプロットは他の動作中アプリケーション のCPU使用率の影響を受けやすい印象です。

個人的には、結果で30FPS出てたとしても、現実的には10~20FPS程度で降ってくる条件での利用がよいと思っています。

また、PCスペックやOSによっても変わる可能性があります。

検証環境

pyplot.plot()FPS測定結果

f:id:Kurene:20210129151531p:plain

pyplot.imshow()

f:id:Kurene:20210129151551p:plain

データサイズが大きい為、要素数が1万を超えたあたりがら30FPSが厳しくなるのではないかと推測できます。

動画

検証用コード

注意点として、fig.canvas.draw()fig.canvas.flush_events()を呼ぶと結構遅くなります。

参考文献