Fala, Gidson. Tudo bom?
Fiz as correções do seu código. Veja como ficou em https://github.com/mayconblopes/Ciencia_Dados/blob/master/ex_plotagem_graf.py
Abaixo, algumas considerações para tentar te ajudar.
Pela lógica do seu programa, entendi que você deseja representar tudo em um mesmo gráfico, mais ou menos assim:
Vamos lá...
Como o python trabalha com identação, você precisa ter muito cuidado com isso. Dentro da sua estrutura FOR ajuste as linhas de código para ficarem identadas com equivalente a quatro espaços para direita.
Além disso, dentro do método plt.plot(), você não está passando o argumento referente ao label, que é justamente o que você deseja que seja representado ("como eu consigo usar um título para cada gráfico?"). Assim, a chamada do método plot() deveria ser assin:
`plt.plot(x, y, marker='o', label=nota[0])`
Também percebi que você criou o xlabel e o ylabel, mas de forma incorreta. O correto é:
plt.xlabel('Provas')
plt.ylabel('Notas')
E não:
plt.xlabel = ('Provas')
plt.ylabel = ('Notas')
O método plt.title() cria um título para o gráfico. Do jeito que você colocou, o título do seu gráfio é 0.
Ao invés de
plt.title([0])
O correto seria (exemplo):
plt.title('Gráfico com as notas')
Por fim, você precisa chamar o método plt.legend() para exibir corretamente as legendas (nomes de cada gráfico, isto é, Matemática, Português e Geografia).