4
respostas

So plota um gráfico

Olá pessoal, Quando eu escrevo este código, que me parece igual ao da aula, ele plota apenas 01 gráfico, com as 3 séries nele.

Vocês poderiam me ajudar?

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 ='x')
 plt.xlabel("Provas")
 plt.ylabel("Notas")
 plt.title(nota[0])
 plt.show

`

4 respostas

Conforme as instruções da aula, gostaria de plotar um gráfico para cada série... :(

Wellington, como vai?

Na instrução plt.show é necessário colocar parênteses, dessa forma: plt.show()

Creio que isso resolverá seu problema, tente e me diga se obteve êxito.

Fico a disposição.

Abraços e bons estudos!

Deu certo. Muito obrigado!

Uma dúvida, como eu faria pra editar a cor das linhas conforme o laço avança?

O primeiro passo é fazer uma lista com as cores que deseja para cada gráfico. As cores padrões da biblioteca Matplotlib são definidas da seguinte forma:

b: blue
g: green
r: red
c: cyan
m: magenta
y: yellow
k: black
w: white

Como exemplo, escolhi as cores azul, verde e vermelho, então a lista ficará da seguinte forma:

cores = ['b', 'g', 'r']

A ideia é que o primeiro gráfico tenha a cor azul, o segundo verde e o terceiro vermelho.

Precisaremos alterar o nosso código para que possamos acessar os índices da lista de cores, pois, na primeira iteração pegaremos o valor de cores na posição 0(azul), da segunda vez o valor de cores na posição 1(verde) e por fim, a posição 2(vermelho).

Para conseguirmos o índice podemos utilizar a função enumerate em nosso laço for. Com ela conseguiremos adicionar um contador de iterações, por padrão ele começará com zero. Ou seja, a primeira iteração o índice será o 0, a segunda o 1, a terceira o 2. E são esses números que precisaremos para acessar a lista de cores. A sintaxe do enumerate é parecida com o código abaixo:

for indice, nota in enumerate(notas):

Agora, precisamos passar a lista de cores com seu respectivo índice para o nosso gráfico através do atributo colors:

plt.plot(x, y, marker ='x', color=cores[indice])

Com isso, na primeira iteração color será igual a azul, na segunda verde e assim por diante.

Código completo:

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]
cores = ['b', 'g', 'r']

for indice, nota in enumerate(notas):
 x = list(range(1, 9))
 y = nota[1:]
 plt.plot(x, y, marker ='x', color=cores[indice])
 plt.xlabel("Provas")
 plt.ylabel("Notas")
 plt.title(nota[0])
 plt.show()

Caso queira ver mais opções de cores indico este link da documentação. E sobre a função enumerate recomendo a leitura deste trecho da documentação.

Qualquer dúvida estou por aqui.