Merci pour ton aide ça marche super bien mais le problème est que y'a le même espacement entre deux dates :
Si par exemple j'ai les 3 dates suivantes 14/02/2016 ; 15/02/2016 ; 29/12/2016 j'aimerais que l'espace entre le 14 et le 15 février soit plus court que l'espace entre le 15 février et le 29 décembre...
Je sais pas si je suis clair ou même si c'est possible
Je ne sais absolument pas si numpy intègre par défaut ce genre de mécanisme. Par contre tu es tout à fait en mesure de créer ton propre affichage (mais ça risque de vite devenir bordélique). Tu pourrais par exemple utiliser une échelle logarithmique entre deux dates. Un truc du style:
import datetime as dt
from math import log10
import matplotlib.pyplot as plt
def echelle_log(dates, format="%d/%m/%Y", start=0):
dates = iter(dates)
first_date = dt.datetime.strptime(next(dates), format)
out = [start]
for date in dates:
second_date = dt.datetime.strptime(date, format)
nb_second = (second_date - first_date).total_seconds()
out.append(out[-1] + log10(nb_second)/log10(86400))
#La seconde date devient la première pour l'itération suivante
first_date = second_date
return out
data = [49, 20, 37, 28, 20]
jours = ["14/02/2016", "15/02/2016", "17/02/2016", "28/05/2016", "15/07/2016"]
x = echelle_log(jours, start=1)
plt.plot(x, data)
plt.xticks(x, jours, rotation=45)
plt.xlim(0, max(x)+1)
plt.show()
C'est juste un exemple pour te montrer que c'est possible. Pour avoir quelque chose de propre visuellement, il faudra sûrement modifier quelques valeurs (la valeur de start, les bornes de xlim, ...). À toi d'adapter ce code ou de construire ta propre échelle.
Précepte: Le mieux est l'ennemi du bien
Courbe avec comme axe date
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.