Lors de la création d'un tracé linéaire d'un Pandas Dataframe avec des valeurs datetime sur l'axe x, il est important de considérer la compatibilité entre Pandas et la gestion datetime de matplotlib. Par défaut, Pandas et matplotlib utilisent des formats datetime différents, ce qui peut entraîner des problèmes de formatage des axes.
Contexte du problème :
Votre extrait de code illustre ce problème : utiliser pd .to_datetime pour convertir la colonne 'date' en objets datetime et la définir comme index crée un axe datetime Pandas. Cependant, l'ajout du DateFormatter directement à cet axe ne produit pas le formatage de date attendu.
Ursache :
Le décalage survient parce que Pandas utilise son propre format datetime, qui diffère de celui utilisé par matplotlib. Tenter de mélanger ces formats peut conduire à des résultats inattendus.
Solution :
Pour remédier à cette incompatibilité, vous avez deux options :
1. Activez la compatibilité de l'axe x dans Pandas :
Ajoutez x_compat=True lors du traçage du dataframe. Cela demande à Pandas d'utiliser le formatage datetime de matplotlib pour l'axe des x.
df.plot(x_compat=True)
2. Utilisez matplotlib directement pour le formatage datetime :
Au lieu d'utiliser les capacités de traçage intégrées de Pandas, vous pouvez créer un tracé en utilisant directement matplotlib. Cela vous permet d'utiliser la gamme complète d'options de formatage datetime de matplotlib.
plt.plot(df['date'], df['ratio1'])
En utilisant le DateFormatter du module de dates de matplotlib, vous pouvez obtenir le formatage de date souhaité :
ax = df.plot(x_compat=True, figsize=(6, 4)) ax.xaxis.set_major_locator(dates.DayLocator()) ax.xaxis.set_major_formatter(dates.DateFormatter('%d\n\n%a')) ax.invert_xaxis() ax.get_figure().autofmt_xdate(rotation=0, ha="center")
En utilisant ces méthodes, vous pouvez vous assurer que l'axe des x de votre tracé linéaire affiche correctement les dates, évitant ainsi toute incohérence entre Pandas et la gestion datetime de matplotlib.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!