Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Pyplot com listas que variam de tamanho

Consegui desenhar esse código bem simples que atualiza o tamanho da coluna x, com crescimento de dados da lista da coluna y

Sabem se existe uma maneira mais simples de escrever?


from random import randrange

if len(a) >= 40:
  a = []
else: 
  for velocid in range(8):  
     a.append(randrange(30,50))

b = list(range(2000 + 1, 2000+ len(a)+1))

import matplotlib.pyplot as plt
x = list(b)
y = list(a)
plt.plot(x,y, marker='o')
plt.title('Velocidade Média Avenida')
plt.xlabel('Anos')
plt.ylabel('Velocidade Média')
plt.show()
2 respostas
solução!

Olá Leandro, tudo bem ? Espero que sim.

Seu código ficou muito legal, parabéns por compartilha-lo.

Fiz algumas modificações usando list comprehension que permite gerar listas usando for, e também criei os parâmetros em variáveis.

A primeira célula é composta das importações das funções, configuração do SEED e da inicialização das variáveis.

from random import randrange, seed #função de gerar numeto aleatorio e de seed do gerador
import matplotlib.pyplot as plt #função para plotar gráfico


seed(10) #  garantir que vamos conseguir reproduzir os resultados
y = []  # incializando a lista do eixo y
eventos = 8  # quantidade de eventos por iterações
ano_inicial = 2001  # ano incial dos eventos
limite_lista = 40  # numero maximo de eventos
lim_inf = 30  # velocidade minima
lim_sup = 50  # velocidade maxima

A segunda célula é a que vai gerar ou atualizar as listas e plotar o gráfico.

if len(y) > limite_lista:  # verifica se a lista passou o limite
  y = []  # reinicializacao da lista do eixo y

# concatenando a lista y com uma nova lista. 
# A nova lista eh gerada por numeros aleatorios entre o limite inferior e o superior,
# a quantidade de numeros eh determinada pelo numero de eventos
y = y + [randrange(lim_inf, lim_sup) for _ in range(eventos)] 

# lista de anos, comecando no ano incial e somando um ano até o tamanho de y menos 1
x = [ano_inicial + ano for ano in range(0, len(y))]

# plot das listas X e Y
plt.plot(x, y, marker='o')
plt.title('Velocidade Média Avenida')
plt.xlabel('Anos')
plt.ylabel('Velocidade Média')
plt.show()

A primeira célula tem a função de tornar os parâmetros facilmente interpretados e modificáveis.

Já a segunda célula tem a lógica do seu projeto levemente modificada com o list comprehension, concatenação de lista e utilização da variável de ano inicial.

Espero ter ajudado e agregado um pouco no seu projeto. Novamente, parabéns por compartilhar seu código. Qualquer duvida não hesite em perguntar.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Oi Igor!

Muitíssimo obrigado pela explicação, uma aula a parte. Anotei aqui para praticar

Abraço!