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 :
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.
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>
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!