Matplotlibs fill_between funktioniert nicht mit plot_date, irgendwelche Alternativen?

8

Ich möchte eine Handlung wie folgt erstellen:

Der Code:

%Vor%

aber mit Daten in der x-Achse, so (ohne Bänder):

der Code:

%Vor%

Das Problem ist, dass fill_between fehlschlägt, wenn x-Werte date_time-Objekte sind.

Kennt jemand eine Problemumgehung? DF ist ein Pandas DataFrame.

    
fccoelho 22.01.2015, 14:34
quelle

2 Antworten

13

Es würde helfen, wenn Sie zeigen, wie df definiert ist. Was meldet df.info() ? Dies zeigt uns die Dtypes der Spalten.

Es gibt viele Möglichkeiten, Daten darzustellen: als Strings, Ints, Floats, Datetime.datetime, NumPy datetime64s, Pandas Timestamps oder Pandas DatetimeIndex. Die richtige Art zu zeichnen hängt davon ab, was Sie haben.

Hier ist ein Beispiel, das Ihren Code zeigt, wenn df.index ein DatetimeIndex ist:

%Vor%

Wenn der Index String-Darstellungen von Datumsangaben enthält, erhalten Sie (mit Matplotlib Version 1.4.2) einen TypeError:

%Vor%

ergibt

%Vor%

In diesem Fall besteht die Lösung darin, die Zeichenfolgen in Zeitstempel umzuwandeln:

%Vor%     
unutbu 22.01.2015, 15:20
quelle
1

Bezüglich des von chilliq gemeldeten Fehlers:

%Vor%

Dies kann erzeugt werden, wenn die DataFrame-Spalten den Datentyp "object" haben, wenn fill_between verwendet wird. Wenn Sie die Beispielspaltearten ändern und dann versuchen, wie folgt zu plotten, wird der obige Fehler angezeigt:

%Vor%

Aus dfo.info () sehen wir, dass die Spaltentypen "Objekt" sind:

%Vor%

Wenn sichergestellt wird, dass der Datenrahmen numerische Spalten enthält, wird das Problem gelöst. Um dies zu tun, können wir pandas.to_numeric folgendermaßen konvertieren:

%Vor%     
H0R5E 23.06.2017 14:51
quelle

Tags und Links