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