Gráfico Online com duas linhas (MATPLOTLIB) - samur2d2/Python GitHub Wiki

Para utilizar os cógidos, é preciso ter a biblioteca matplolib instalada.

É necessário criar um arquivo para cada código mostrado abaixo. Também é necessário, inicialmente, criar três arquivos de texto, com os nomes “dadosLAST.txt”, “dadosPID_23102022.txt” e “dadosSET_23102022.txt”

Para rodar a simulação, basta executar o código com nome mainAdd e, em seguida, o código com nome mainGraficoOnline.

A imagem abaixo ilustra todos os arquivos que devem ser criados:

import matplotlib.pyplot as plotter
from matplotlib.animation import FuncAnimation

lerDadosPID = "dadosPID_23102022.txt"
lerDadosSET = "dadosSET_23102022.txt"

fig, ax = plotter.subplots()

def animar(i):
    xPID, yPID = [], []
    xSET, ySET = [], []

    with open(lerDadosPID, 'r') as fonte:
        dadosPID = fonte.read()
    for linha in dadosPID.split('\n'):
        if len(linha) == 0:
            continue
        for dadosLinha in linha.split('; '):
            xi, yi = dadosLinha.split(',')
            xPID.append(xi)
            try:
                yPID.append(float(yi))
            except:
                yPID.append(0)

    with open(lerDadosSET, 'r') as fonte:
        dadosSET = fonte.read()
    for linha in dadosSET.split('; '):
        if len(linha) == 0:
            continue
        xi, yi = linha.split(',')
        xSET.append(xi)
        try:
            ySET.append(float(yi))
        except:
            ySET.append(0)

    ax.clear()
    ax.plot(xSET,ySET)
    ax.plot(xPID,yPID) 

    for tick in ax.get_xticklabels(): 
        tick.set_rotation(90)

    last = open('dadosLAST.txt', 'r')
    lastWrite = last.read()
    last.close()
    limSupMin = lastWrite[0:2]
    limSupSec = lastWrite[3:5]
    limInfMin = ""
    limInfSec = ""

    if int(limSupSec) >= 20:
        limInfMin = limSupMin
        if int(limSupSec) < 30:
            limInfSec = str("0"+str(int(limSupSec)-20))
        else:
            limInfSec = str(int(limSupSec)-20)

    else:
        if int(limSupMin) > 0:
            limInfMin = str("0"+str(int(limSupMin)-1))
            faltando = 20-int(limSupSec)
            limInfSec = str(59-faltando)
        else:
            limInfMin = "00"
            limInfSec = "00"

    plotter.xlim(limInfMin+":"+limInfSec, limSupMin+":"+limSupSec)
ani = FuncAnimation(fig, animar, interval = 500)

plotter.show()
from time import sleep

addPID = "dadosPID_23102022.txt"

def gravar(msg):
    fonte = open(addPID, 'a')
    fonte.write(msg)
    fonte.close()
    sleep(1)
    if msg != "\n":
        fonte = open('dadosLAST.txt', 'w')
        fonte.write(msg[:-1])
        fonte.close()

def startTimer(min, seg):
    if min < 10:
        if seg < 10:
            gravar("0"+str(min) +":"+ "0"+str(seg) + ",")
        else:
            gravar("0"+str(min) +":"+ str(seg) + ",")
    else:
        if seg < 10:
            gravar(str(min) +":"+ "0"+str(seg) + ",")
        else:
            gravar(str(min) +":"+ str(seg) + ",")
        gravar('\n')
import random
from time import sleep

random.seed()

addPID = "dadosPID_23102022.txt"
def gravar(msg):
    fonte = open(addPID, 'a')
    if msg != "\n":
        fonte.write(msg+"; ")
    else:
        fonte.write(str(random.randrange(5))+msg)
    fonte.close()

def startPID(min, seg):
    if seg == 59:
        gravar('\n')
    else:
        gravar(str(random.randrange(5)))
import fakePID
import salvarPID

for min in range(2):
    for seg in range(60):
        salvarPID.startTimer(min, seg)
        fakePID.startPID(min, seg)
⚠️ **GitHub.com Fallback** ⚠️