Heim  >  Artikel  >  Backend-Entwicklung  >  Wie werden Daten auf der x-Achse eines Pandas-Liniendiagramms korrekt angezeigt?

Wie werden Daten auf der x-Achse eines Pandas-Liniendiagramms korrekt angezeigt?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-26 18:49:02693Durchsuche

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

Anzeigen des Datums auf der x-Achse im Pandas-Dataframe-Liniendiagramm

Einführung

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.

DateFormatter-Problem

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.

Inkompatibilität von Pandas und Matplotlib Datetime-Objekten

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.

Lösungen

Verwendung von x_compat

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.

Datetime mit Matplotlib zeichnen

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn