1
resposta

Plotar tudo no mesmo grafico e colocar um titulo para indentificação

Vi recentemente um outro aluno mostrando que se ocultássemos o plt.show( ), simplismente colocando # na frente ele criaria um grafico unificado com as 3 notas, porem fiquei com a duvida de como explicar qual linha era qual nota, acabei fazendo isto


import matplotlib.pyplot as plt


notas_matematica = ['Matemática',8,7,6,6,7,7,8,10]

notas_portugues = ['Português',9,9,9,8,5,6,8,5]

notas_geografia = ['Geografia',10,10,6,7,7,7,8,7]

notas = [notas_matematica, notas_portugues, notas_geografia]



for nota in notas:

 x = list(range(1, 9))

 y = nota[1:]

 plt.plot(x, y, marker='o')

 plt.xlabel('Provas:  verde= geo  laranja= port  azul= mat')
 #criando um titulo bem improvisado kkk
 plt.ylabel('Notas')

 plt.title(nota[0])

 #plt.show()` #ocultando usando a hashtag

#tem alguma maneira melhor de fazer este titulo? fica aqui minha duvida

1 resposta

Oii Vinicius, como você está? Espero que esteja bem ^-^

Peço desculpas pela demora em obter um retorno.

A forma como você alcançou o resultado não é errada, mas há uma forma melhor de alcançarmos esse resultado, utilizando recursos da própria biblioteca Matplotlib específico para legendas: o plt.legend.

Na instrução plt.plot, iremos adicionar a legenda daquele eixo, usando o atributo label:

plt.plot(x, y, marker='o', label = f"{nota[0]}")

E por fim, utilizaremos a instrução plt.legend em conjunto com o atributo loc("best"), para mostrar a legenda e escolher a melhor posição para ela:

plt.legend(loc="best")

O código completo ficará da seguinte forma:

import matplotlib.pyplot as plt


notas_matematica = ['Matemática',8,7,6,6,7,7,8,10]

notas_portugues = ['Português',9,9,9,8,5,6,8,5]

notas_geografia = ['Geografia',10,10,6,7,7,7,8,7]

notas = [notas_matematica, notas_portugues, notas_geografia]

legenda = ["Matemática", "Português", "Geografia"]


for nota in notas:

 x = list(range(1, 9))
 y = nota[1:]

 plt.plot(x, y, marker='o', label = f"{nota[0]}")

 plt.xlabel('Provas')
 plt.ylabel('Notas')
 plt.legend(loc="best")
 plt.title("Comparação de Notas")

Resultado:

Imagem do gráfico de linhas, o gráfico possui fundo branco, no eixo X temos as provas e no eixo y temos as notas, com uma linha azul temos apresentando as notas de matemática, seu valor primeiro valor é 8 e o último é 10, representando as notas de português temos uma linha laranja, a primeira nota apresentada é 9 a última nota é 5 e por fim, representando Geografia, temos a cor verde, sendo a primeira nota 10 e a última nota o valor 7, o gráfico representa os dados apresentado no código anterior à este gráfico.

Caso queira se aprofundar em relação a visualização de dados com matpltolib e descobrir várias outras possibilidades com essa biblioteca, recomendo o curso de Data Visualization: criação de gráficos com o Matplotlib.

Qualquer dúvida me encontro à disposição.

Abraços e bons estudos!