Gráfico com duas linhas (MATPLOTLIB) - samur2d2/Python GitHub Wiki
Primeiro, abra o seu prompt de comando (cmd) e digite a seguinte instrução:
pip install matplotlib
Aguarde a instalação ser concluída.
Primeiro, importe a biblioteca para ser utilizada.

Estou utilizando os dados a partir de uma fonte externa (mais comum). Caso sua fonte de dados venha do próprio código, basta definir os valores dos eixos.

Os dados estão sendo salvos da seguinte forma: valor de x, valor de y quebra linha (contra barra n)
Utilize a função with para realizar a leitura do arquivo:

Dessa forma, o arquivo “dadosPID.txt” está sendo aberto no modo de leitura (‘r’) com o nome “fonte”.
Em seguida, os dados desse arquivo estão sendo lidos e copiados para a variável “dadosPID”.
Para plotar o gráfico, é preciso que sejam definidas duas variáveis do tipo lista, cada uma referente a um eixo.


A função dados.split divide a fonte de dados em linhas, que são armazenados na variavel linhas.
A função IF verifica se a linha está vazia, ou seja, se é a última linha do txt.
Caso não seja a ultima linha, os dados da variável linha (por exemplo: “9,17”) vão ser separados em cada uma das suas variáveis. Ou seja, x recebe 9 e y recebe 17.
As funções x.append e y.apped servem para adicionar na última posição da lista os valores separados na linha acima.

Dentro da função plotter.plot(), basta informar qual variável deve ser plotada no eixo x e qual variável deve ser plotada no eixo y.
E então chamar a função que mostra a janela do gráfico.
#VOCÊ DEVE CRIAR DOIS ARQUIVOS PARA SEREM AS FONTES DE DADOS.
import matplotlib.pyplot as ploter
with open('dadosPID.txt', 'r') as fonte:
dadosPID = fonte.read()
with open('dadosSET.txt', 'r') as fonte:
dadosSET = fonte.read()
xPID, yPID = [], []
xSET, ySET = [], []
for linha in dadosPID.split('\n'):
if len(linha) == 0:
continue
xi, yi = linha.split(',')
xPID.append(float(xi))
yPID.append(float(yi))
for linha in dadosSET.split('\n'):
if len(linha) == 0:
continue
xi, yi = linha.split(',')
xSET.append(float(xi))
ySET.append(float(yi))
ploter.plot(xSET,ySET)
ploter.plot(xPID,yPID)
ploter.show()

#VOCÊ DEVE CRIAR DOIS ARQUIVOS PARA SEREM AS FONTES DE DADOS.
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('; '):
if len(linha) == 0:
continue
xi, yi = linha.split(',')
xPID.append(xi)
yPID.append(float(yi))
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)
ySET.append(float(yi))
ax.clear()
ax.plot(xSET,ySET)
ax.plot(xPID,yPID)
ani = FuncAnimation(fig, animar, interval = 1000)
plotter.show()