Junio Calú
Junio Calú

Reputation: 47

Pandas using matplot displays an incorrect year on the x-axis date

In the graph, the date axis is not being displayed correctly with date formatting, the year that should be "2020" and is displayed as "51". Text text text Text text text Text text text Text text text Text text text Text text text Text text text Text text text Text text text

# -*- coding: latin-1 -*-

import pandas as pd
import datetime
import matplotlib.pyplot as plt
import matplotlib.dates as mdates

hoje = datetime.datetime.now()
data = hoje.strftime("%Y%m%d")
dados_url = 'https://covid.saude.gov.br/assets/files/COVID19_'+data+'.csv'

try:
    print(dados_url)
    dados = pd.read_csv(dados_url, sep=';', parse_dates=['data'],  dayfirst=True)
except Exception as e:
    print("Os dados para a data corrente ainda não foram atualizados, buscando dados do dia anterior...")
    print(e)
    DD = datetime.timedelta(days=1)
    hoje = hoje - DD
    data = hoje.strftime("%Y%m%d")
    print(str(hoje))
    dados_url = 'https://covid.saude.gov.br/assets/files/COVID19_'+data+'.csv'
    print(str(dados_url))
    dados = pd.read_csv(dados_url, sep=';', parse_dates=['data'],  dayfirst=True)

#pd.set_option('display.max_rows', None)

dados_alagoas = dados[dados['estado'] == 'AL']
dados_alagoas.set_index('data',inplace=True)
#print(dados_alagoas)

plt.style.use('ggplot')

fig, ax = plt.subplots(figsize=(30,15))
dados_alagoas.plot(ax=ax, rot=75)

#grafico em barras
#dados_alagoas.plot(ax=ax, rot=75, kind='bar', width=2.0)

ax.xaxis.set_major_locator(mdates.DayLocator(interval=1))
ax.xaxis.set_major_formatter(mdates.DateFormatter('%d/%m/%y'))
ax.set_title('Incidência do COVID-19 em Alagoas em '+hoje.strftime('%d/%m/%Y'))
ax.set_ylabel('Ocorrências')
ax.set_xlabel('Data')
plt.show()

enter image description here

Upvotes: 1

Views: 647

Answers (1)

r-beginners
r-beginners

Reputation: 35205

I'm not very experienced. I have been unable to improve it by changing various settings as far as I know. We responded in the following way. for your information

# ax.xaxis.set_major_locator(mdates.DayLocator(interval=1))
# ax.xaxis.set_major_formatter(mdates.DateFormatter('%d/%m/%y'))
ax.set_xticks(dados_alagoas.index)
ax.set_xticklabels(dados_alagoas.index.strftime('%d/%m/%y'))

Upvotes: 1

Related Questions