5
respostas

Alterar intervalo de eixo no plot

Como altero o intervalo do eixo X, neste caso as datas para fazer as análises por períodos ? Está considerando todo o intervalo do dado. Obrigado !

differences=summed.T[2:-2].diff().dropna()
differences.plot()
plt.title("Casos novos com o decorrer do tempo")
plt.show()
5 respostas

Olá, tudo bem ? Espero que sim.

A solução que pensei foi utilizando regex, acessei a coluna index que é onde estão as datas e utilizei o regex para pegar apenas o mês de janeiro.

janeiro = summed.T[2:-2].diff().dropna().index.str.contains("1/\w{2}/")

Depois utilizando a Series da variável Janeiro filtrei o DataFrame.

differences = summed.T[2:-2].diff().dropna()[janeiro]
differences.plot()
plt.title("Casos novos com o decorrer do tempo")
plt.show()

Entendo se for fazer um período mais elaborado talvez faça sentido mudar o tipo da coluna para data.

Me diz se era isso que você tinha em mente.

Bons Estudos.

Olá ! Não sei o que estou errando. Gostaria de limitar o intervalo de data entre estas (first_date, end_date), mas o gráfico sai em branco. Se comento a linha plt.xlim o gráfico sai certo, porém com todas as datas.

import pandas as pd
import matplotlib.pyplot as plt
import datetime as dt
summed.T[2:-2].plot()
first_date=dt.date(2020,1,22)
end_date=dt.date(2020,3,3)
plt.title("Desenvolvimento de casos confirmados com o passar do tempo")
plt.xlim(first_date, end_date)
plt.show()

Muito obrigado pela ajuda !

Olá.

Na documentação diz que o xlim espera receber uma tupla ou lista de float, a solução que encontrei foi encontrar a posição da data dentro da lista de datas e a partir da posição limitar nosso eixo:

list(summed.T[2:-2].index).index('5/1/20')

Transformei o index que são as datas em uma lista e na lista usei o método index para encontrar a posição da data na lista.

O código combinado com o seu fica assim:


import pandas as pd
import matplotlib.pyplot as plt
import datetime as dt


first_date = list(summed.T[2:-2].index).index('5/1/20')
end_date = list(summed.T[2:-2].index).index('6/20/20')


summed.T[2:-2].plot(title="Desenvolvimento de casos confirmados com o passar do tempo",
                   xlim=(first_date, end_date))

plt.show()

Veja se essa solução serve para a sua situação, bons estudos.

: )

Olá Igor, agradeço sua ajuda mas não funcionou. Estou fazendo o curso "Visualização de dados para saúde e medicina". Quando foi gravado o curso, o mes final era Março de 2020 mas agora os dados vão até Set-Out/2020. Queria visualizar o mesmo intervalo do vídeo por isso a necessidade de ajustar o eixo. Aparentemente pensei que fosse simples. Fiz a sequência do tutorial que não limitava o intervalo, mas isto é o que procuro.

Na variável summed.T[2:-2] é um dataframe com três colunas is_china_label (Date), China (Integer), Others (Integer). O código original vem da seguinte forma:

import pandas as pd
import matplotlib.pyplot as plt
import datetime as dt
summed.T[2:-2].plot()
plt.title("Desenvolvimento de casos confirmados com o passar do tempo")
plt.show()

Só quero fazer o mesmo plot porém mudando o intervalo (Data) no eixo X.

Obrigado pela ajuda !

Formato do dado:

is_china_label    China    Others
1/22/20    548.0    7.0
1/23/20    643.0    11.0
1/24/20    920.0    21.0
1/25/20    1406.0    28.0
1/26/20    2075.0    43.0
...    ...    ...
10/8/20    90728.0    36424835.0
10/9/20    90751.0    36785497.0
10/10/20    90778.0    37116279.0
10/11/20    90812.0    37384513.0
10/12/20    90830.0    37710696.0

Olá.

Consegui o mesmo resultado da aula executando o código abaixo:


end_date = list(confirmed_by_country.loc["China"][2:].index).index('3/2/20')
summed.T[2:-2][:end_date+1].plot()
plt.title("Desenvolvimento de casos confirmados com o passar do tempo")
plt.show()

Primeiro localizo a posição da ultima data e utilizo essa posição para limitar nosso DataFrame até a posição que precisamos.

Se não funcionar, compartilha o seu notebook para eu te ajudar.

Bons Estudos.