Как динамический график с данными из базы данных вместо .txt? - PullRequest
0 голосов
/ 07 июня 2019

У меня есть код, который имитирует датчик, помещая случайные значения и временные метки в текстовый файл.Из этого файла, который постоянно обновляется, я могу динамически отображать эти значения.Теперь моя идея - сделать то же самое, но получить данные из базы данных.Я уже могу сохранять любые данные, поступающие с моего сервера, в базу данных.Теперь дело в области динамического построения.

Мой код для сохранения данных в таблицу:

while True:
    data = conn.recv(2048).decode('utf-8')
    if not data:
        break
    #print('Servidor recebeu :', repr(data))
    t = dt.datetime.now().strftime('%H:%M:%S')
    c.execute('INSERT INTO edgedata VALUES (?,?)', (data, t))
    con.commit()

Мой код для динамического построения из файла .txt:

#!/usr/bin/env python
import matplotlib.pyplot as plt
import matplotlib.animation as animation
import numpy as np


fig = plt.figure()
ax1 = fig.add_subplot(1,1,1)

def animate(i):
    print("inside animate")
    pullData = open("datatest.txt","r").read()
    dataArray = pullData.split('\n')
    xar = []
    yar = []

    for eachLine in dataArray:
        if len(eachLine)>1:
            x,y = eachLine.split(',')
            xar.append(str(x))
            yar.append(float(y))

    ax1.clear()
    ax1.plot(xar,yar)

    plt.xlabel('Hora')
    plt.xticks(rotation=45, ha='right')
    plt.subplots_adjust(bottom=0.30)
    plt.ylabel('Valor Dado')
    plt.title('Pseudo-Sensor x Hora')


ani = animation.FuncAnimation(fig, animate, interval=1000)
plt.show()

Любая помощь будет оценена.Заранее спасибо!

1 Ответ

0 голосов
/ 10 июня 2019

Этот код сделал работу за меня.Спасибо

fig = plt.figure()
ax1 = fig.add_subplot(1,1,1)

def animate(i):
    print("inside animate")

    con = sqlite3.connect('edgedb')
    c = con.cursor()

    c.execute('SELECT data, timestamp FROM edgedata')
    data = c.fetchall()

    datas = []
    dates = []

    for row in data:
        datas.append(row[1])
        dates.append(float(row[0]))

    ax1.clear()
    ax1.plot_date(datas,dates,'-')

    plt.xlabel('Hora')
    plt.xticks(rotation=45, ha='right')
    plt.subplots_adjust(bottom=0.30)
    plt.ylabel('Valor Dado')
    plt.title('Pseudo-Sensor x Hora')


ani = animation.FuncAnimation(fig, animate, interval=1000)
plt.show()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...