Heim >Backend-Entwicklung >Python-Tutorial >Wie werden Daten auf der x-Achse eines Pandas-Liniendiagramms korrekt angezeigt?
Um Daten auf der x-Achse eines Pandas-Liniendiagramms anzuzeigen, wird der set_index ()-Methode kann verwendet werden, um eine Spalte mit Datumswerten in den Index des DataFrame zu konvertieren. Wenn Sie jedoch die DateFormatter-Funktion von matplotlib zum Formatieren der Datumsangaben verwenden, können bestimmte Probleme auftreten.
Das Bild unten zeigt das Problem beim Hinzufügen von DateFormatter zum Code:
[Bild eines Liniendiagramms mit falscher Datumsformatierung]
Beachten Sie, dass die Daten am 24.05. statt am 25.05. beginnen und der Donnerstag fälschlicherweise mit dem 25.05. des Jahres 2017 beschriftet ist. Dies liegt häufig an der Zeitzone. Verwandte Probleme oder Inkompatibilitäten zwischen Pandas und Matplotlib Datetime-Dienstprogrammen.
Pandas und Matplotlib Datetime-Objekte sind im Allgemeinen inkompatibel. Beim Versuch, ein Matplotlib-Datumsobjekt auf einer mit Pandas erstellten Datumsachse zu verwenden, können Probleme auftreten.
Ein Grund dafür ist, dass Pandas-Datums-/Uhrzeitobjekte in Gleitkommazahlen konvertiert werden, die die Zeit in Tagen seit 0001-01 darstellen -01 UTC, plus 1. Dieses Format unterscheidet sich vom Datum/Uhrzeit-Format von matplotlib.
Um das Problem mit der Datumsformatierung zu lösen, kann das Argument x_compat=True sein an die Methode plot() übergeben. Dies weist Pandas an, kein eigenes Datum/Uhrzeit-Format zu verwenden, sodass die Ticker, Locators und Formatierer von Matplotlib verwendet werden können.
Alternativ, wenn eine präzisere Datum/Uhrzeit-Formatierung erforderlich ist, Matplotlib kann sowohl zum Plotten als auch zum Formatieren verwendet werden. Der folgende Codeausschnitt veranschaulicht diesen Ansatz:
<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>
Dieser überarbeitete Code generiert ein Liniendiagramm mit genau formatierten Datumsangaben auf der x-Achse.
Das obige ist der detaillierte Inhalt vonWie werden Daten auf der x-Achse eines Pandas-Liniendiagramms korrekt angezeigt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!