我正在嘗試在 Jupiter notebook 中運行代碼,但其中的數字無法運行,請幫助我使用“matplotlib”庫在 Pandas DataFrame 中顯示 BTC 圖
import websockets
import asyncio
import json
import time
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111)
fig.show()
xdata = []
ydata = []
def update_graph():
ax.plot(xdata, ydata, color='g')
ax.legend([f"Last price: {ydata[-1]}$"])
fig.canvas.draw()
plt.pause(0.1)
async def main():
url = "wss://stream.binance.com:9443/stream?streams=btcusdt@miniTicker"
async with websockets.connect(url) as client:
while True:
data = json.loads(await client.recv())['data']
event_time = time.localtime(data['E'] // 1000)
event_time = f"{event_time.tm_hour}:{event_time.tm_min}:
{event_time.tm_sec}"
print(event_time, data['c'])
xdata.append(event_time)
ydata.append(int(float(data['c'])))
update_graph()
if __name__ == '__main__':
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
uj5u.com熱心網友回復:
只需洗掉此陳述句: if __name__ == '__main__':
uj5u.com熱心網友回復:
Jupyter 以與普通 Python 不同的方式運行您的代碼。
當你運行你的代碼python myfile.py,它設定了一個名為變數__name__來main。但是當 Jupyter 運行您的代碼時,它不會設定變數。
因此,當您說 時if __name__ == '__main__',它永遠不會在 Jupyter 中執行,因為__name__永遠不會main。
因此,解決方案是洗掉該if陳述句并保留其下方的行。
改變
if __name__ == '__main__':
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
到
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
uj5u.com熱心網友回復:
下午好!我在啟動時發布錯誤:
- /opt/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:3: UserWarning: Matplotlib 當前正在使用 module://ipykernel.pylab.backend_inline,這是一個非 GUI 后端,因此無法顯示該圖. 這與 ipykernel 包是分開的,因此我們可以避免進行匯入,直到
點擊查看錯誤
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/386214.html
標籤:Python 熊猫 数据框 matplotlib
