簡體   English   中英

Python 使用 Matplotlib 進行實時繪圖

[英]Python using Matplotlib for real-time plotting

在此處輸入圖片說明 我將在開頭說我仍在學習 Python,所以請保持友善和耐心。 我的代碼如下:

  • 網絡上的客戶端每約 5 秒向 SCP 服務器發送一個文本文件 (stats.txt)。 Python 代碼位於服務器上。

下面的代碼開始:

import matplotlib.pyplot as plt
import csv
import datetime


x = []
y = []
rssi_val = []



def animate(i):
    with open('stats.txt', 'r') as searchfile:
        time = (searchfile.read(5))
        for line in searchfile:
            if 'agrCtlRSSI:' in line:
                rssi_val = line[16:20]

    y = [rssi_val]

    x = [time for i in range(len(y))]

    plt.xlabel('Time')
    plt.ylabel('RSSI')
    plt.title('Real time signal strength seen by client X')
    #plt.legend()


    plt.plot(x,y)

    ani = FuncAnimation(plt.gcf(), animate, interval=5000)

    plt.tight_layout()

    #plt.gcf().autofmt_xdate()

    plt.show()
  • SCP 服務器每 5 秒打開一次文件並繪制從文件解析的值。 時間繪制在 X 軸上,RSSI 值繪制在 Y 軸上。

我理解所使用的代碼和方法在這一點上效率不高,將來會進行修改。 現在,我只希望每 5 秒左右顯示一次繪圖值,並使用繪圖(線)對圖表進行動畫處理。

運行它不會產生任何結果。

你需要有這條線

ani = FuncAnimation(plt.gcf(), animate, interval=5000)

在函數animate ,假設數據已接收並正確讀取,您應該會看到繪圖更新。 您可能還需要投入plt.show()FuncAnimation()行取決於你如何執行腳本。


編輯

你可能想嘗試這樣的事情

import matplotlib.pyplot as plt
import csv
import datetime

x = []
y = []
rssi_val = []

def animate(i):
    with open('stats.txt', 'r') as searchfile:
        time = (searchfile.read(5))
        for line in searchfile:
            if 'agrCtlRSSI:' in line:
                rssi_val = line[16:20]

    y.append(rssi_val)
    x.append(time)

    plt.cla()
    plt.plot(x,y)
    plt.xlabel('Time')
    plt.ylabel('RSSI')
    plt.title('Real time signal strength seen by client X')
    plt.tight_layout()

ani = FuncAnimation(plt.gcf(), animate, interval=5000)
plt.show()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM