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

Patricia Arquette
Libérer: 2024-10-28 08:49:02
original
787 Les gens l'ont consulté

How to Display Dates Correctly on the X-Axis of a Pandas DataFrame Line Plot?

Date d'affichage du tracé de la ligne Pandas Dataframe sur l'axe x

Problème :

Lors de la tentative de tracé un Pandas DataFrame avec des dates sur l'axe des x, la bibliothèque matplotlib produit un formatage imprécis et des dates qui ne correspondent pas correctement aux données.

Réponse :

L'incompatibilité entre les utilitaires datetime de Pandas et Matplotlib est à l'origine de ce problème. Pandas utilise une représentation à virgule flottante non standard pour les objets datetime, qui est incompatible avec les propres méthodes de formatage de date de Matplotlib.

Solution :

Pour résoudre ce problème, il y a Il existe deux approches possibles :

  1. Désactiver le formatage de la date Pandas :

    En définissant x_compat=True lors du traçage du DataFrame, Pandas utilisera la date interne de Matplotlib mécanismes de formatage, permettant un contrôle plus précis sur le formatage de l'axe x.

  2. Utilisez Matplotlib exclusivement pour le traçage et le formatage :

    Au lieu de vous fier sur Pandas pour le traçage de dates, vous pouvez utiliser les propres méthodes de Matplotlib pour gérer les valeurs de date et le formatage. Cela offre une plus grande flexibilité et vous permet de personnaliser le formatage de la date selon vos besoins.

Voici un exemple mis à jour qui illustre les deux approches :

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

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

usePandas = True

# Either use Pandas
if usePandas:
    df = df.set_index('date')
    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")

# or use Matplotlib
else:
    fig, ax = plt.subplots(figsize=(6, 4))
    ax.plot('date', 'ratio1', data=df)
    ax.xaxis.set_major_locator(dates.DayLocator())
    ax.xaxis.set_major_formatter(dates.DateFormatter('%d\n\n%a'))
    fig.invert_xaxis()

plt.show()</code>
Copier après la connexion

En utilisant l'une ou l'autre de ces approches approches, vous pouvez afficher efficacement les valeurs datetime sur l'axe des x d'un tracé Pandas DataFrame avec un formatage précis.

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!