Comment afficher correctement les dates sur l'axe des x d'un tracé linéaire Pandas ?

Patricia Arquette
Libérer: 2024-10-26 18:49:02
original
712 Les gens l'ont consulté

How to Correctly Display Dates on the x-axis of a Pandas Line Plot?

Affichage de la date sur l'axe x dans le tracé linéaire Pandas Dataframe

Introduction

Pour afficher les dates sur l'axe x d'un tracé linéaire Pandas, le set_index () peut être utilisée pour convertir une colonne contenant des valeurs de date en index du DataFrame. Cependant, lors de l'utilisation de la fonction DateFormatter de matplotlib pour formater les dates, certains problèmes peuvent survenir.

Problème DateFormatter

L'image ci-dessous illustre le problème lié à l'ajout de DateFormatter au code :

[Image d'un tracé linéaire avec un formatage de date incorrect]

Remarquez que les dates commencent le 5-24 au lieu du 5-25, et que le jeudi est incorrectement étiqueté pour le 5-25 de 2017. Cela est souvent dû au fuseau horaire. problèmes liés ou incompatibilités entre les pandas et les utilitaires datetime de matplotlib.

Incompatibilité des objets Pandas et Matplotlib Datetime

Les pandas et les objets datetime matplotlib sont généralement incompatibles. Lorsque vous tentez d'utiliser un objet de dates matplotlib sur un axe de date créé avec des pandas, des problèmes peuvent survenir.

L'une des raisons à cela est que les objets datetime de pandas sont convertis en nombres à virgule flottante représentant le temps en jours depuis 0001-01. -01 UTC, plus 1. Ce format diffère du format datetime de matplotlib.

Solutions

Utilisation de x_compat

Pour résoudre le problème de formatage de la date, l'argument x_compat=True peut être passé à la méthode plot(). Cela demande aux pandas de ne pas utiliser son propre format datetime, ce qui permet d'utiliser les tickers, localisateurs et formateurs de matplotlib.

Tracer la date/heure avec Matplotlib

Alternativement, si un formatage datetime plus précis est requis, matplotlib peut être utilisé à la fois pour le traçage et le formatage. L'extrait de code suivant illustre cette approche :

<code class="python">import matplotlib.pyplot as plt
import matplotlib.dates as dates

# Create the DataFrame
df = pd.DataFrame({'date':['20170527','20170526','20170525'],'ratio1':[1,0.98,0.97]})
df['date'] = pd.to_datetime(df['date'])

# Create the line plot
plt.plot(df['date'], df['ratio1'])

# Set major locator and formatter for the x-axis
plt.gca().xaxis.set_major_locator(dates.DayLocator())
plt.gca().xaxis.set_major_formatter(dates.DateFormatter('%d\n\n%a'))

# Invert the x-axis for chronological order
plt.gca().invert_xaxis()

# Autofmt the x-axis for optimal placement of dates
plt.gcf().autofmt_xdate(rotation=0, ha="center")

# Display the plot
plt.show()</code>
Copier après la connexion

Ce code révisé générera un tracé linéaire avec des dates formatées avec précision sur l'axe des X.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!