0
respostas

Alterar número de ticks de uma time series em um subplot

Olá, pessoal.

Eu quis modificar algumas coisas no gráfico da aula e pesquisei na internet e nas perguntas daqui do fórum como poderia fazer isso. Porém, não consegui solucionar uma das coisas que eu queria fazer.

O gráfico plotado sem nenhuma modificação estava assim:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Esse gráfico foi gerado com simples código que o Guilherme mostra na aula:

confirmed_by_country.loc["China"][2:].plot()

Eu aumentei o tamanho do gráfico, modifiquei a relação altura/largura para poder ter uma visualização melhor, adicionei um título e adicionei uma quantidade de ticks (que são esses valores que aparecem na lateral para dar uma noção de escala para o gráfico) maior para o eixo y e também formatei eles que antes estavam sendo mostrados em notação científica para mostrar os valores absolutos. O gráfico ficou assim:

Gráfico com o número de ticks incorreto

O código que eu utilizei para modificar o gráfico foi o seguinte:

import matplotlib.pyplot as plt
from matplotlib.ticker import FormatStrFormatter, MaxNLocator
%matplotlib inline

fig, ax = plt.subplots(figsize=(15,5))
confirmed_by_country.loc["China"][2:].plot()
ax.yaxis.set_major_locator(MaxNLocator(15))
ax.yaxis.set_major_formatter(FormatStrFormatter('% 1.0f'))
plt.ylim(0, 2150000)
ax.xaxis.set_major_locator(MaxNLocator(15))
plt.title("China Confirmed Cases")
plt.show()

Percebam que eu tentei modificar a quantidade de ticks também do eixo x de 5 (como estava no primeiro gráfico) para 10. Eu vi na internet que uma das formas de mudar o número de ticks era usando o MaxNLocator(). Porém, a data do último tick do primeiro gráfico (4/1/22) continuou como o quinto tick e foram adicinados outros 5 depois dele

Eu vi aqui no fórum em outro post que para formatar os ticks do eixo y seria necessário utilizar o subplots() e não encontrei nenhum exemplo nem aqui e nem na internet que ensinasse como fazer essa modificação do úmero de ticks para o eixo x que sao datas ao invés de números continuos de uma forma que funcionasse.

Alguém pode me ajudar? Obrigado!