【发布时间】:2021-04-15 18:25:35
【问题描述】:
我正在尝试使用 WebSocket 从 Binance (ETHUSDT) 获取和绘制实时数据。获取数据没问题,但是使用 matplotlib 时我无法获得实时绘图。
在代码中,每次收到消息时我都会更新收盘价,并尝试实时绘制这些数据。该图显示在屏幕上,但会阻止进一步的代码执行。我必须手动关闭情节才能收到下一条消息。
我的问题是:如何在不阻塞代码的情况下实时绘制数据?
import websocket, json
import matplotlib.pyplot as plt
import numpy as np
TRADE_SYMBOL = "ETHUSDT"
SOCKET = "wss://stream.binance.com:9443/ws/ethusdt@kline_1m"
closes = np.array([])
# CREATING AXIS
plt.axis([0, 1000, 0, 1])
def on_message(ws, message):
global closes
message = json.loads(message)
candle = message['k']
close = candle['c']
closes = np.append(closes, float(close))
# PLOTTING HERE
plt.plot(closes)
plt.show()
ws = websocket.WebSocketApp(SOCKET, on_message=on_message)
ws.run_forever()
【问题讨论】:
标签: python matplotlib websocket real-time-updates binance