
前提
Pythonとwebsocket-clientでbitflyerから価格データをリアルタイム取得するコードを作っています。
それは完成したため、さらに取得した価格データをリアルタイムに描画したいと思いmatplotlibを用いましたが、リアルタイム描画できないこともないのですがウィンドウが重かったため(シンプルに何度もplt.cla(), plt.show(), plt.pause()を繰り返し実行した)、pyqtgraphというライブラリが軽いらしいのでこれを使う方向で考えました。(それの元となっているPyQtというものもあるようなのでこちらでも良いかもしれません)
しかし、websocketでon_messageイベントが呼ばれるたびにpyqtgraphで描画するという方法がわかりません。
https://brainflow.org/2021-07-05-real-time-example/
このページにのっている動画が理想的なものです。
しかしwebsockeと並走させているわけではなさそうです。
よろしくお願いいたします。
実現したいこと
- websocketのon_messageイベントからリアルタイムに取得される価格データの推移をpyqtgraphでリアルタイム描画する
該当のソースコード
python3
1import websocket 2import json 3 4CHANNEL = "lightning_executions_FX_BTC_JPY" 5 6def on_message(ws, message): 7 global result 8 message = json.loads(message) 9 if message["method"] == "channelMessage": 10 for m in message["params"]["message"]: 11 print(float(m['price'])) 12 13def on_open(ws): 14 ws.send(json.dumps({"method": "subscribe", "params": {"channel": CHANNEL}})) 15 16def on_error(ws, error): 17 print(error) 18 19if __name__ == "__main__": 20 ws = websocket.WebSocketApp("wss://ws.lightstream.bitflyer.com/json-rpc", on_message=on_message, on_open=on_open, on_error=on_error) 21 ws.run_forever()
回答1件