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()
⚠️ **GitHub.com Fallback** ⚠️