Ich verwende die Funktion imshow()
von matplotlib, um pandas.DataFrame
anzuzeigen.
Ich möchte, dass die Labels und Ticks für die X- und Y-Achsen aus den Listen DataFrame.Index und DataFrame.columns gezeichnet werden, aber ich kann nicht herausfinden, wie es geht.
Angenommen, data
ist ein pandas.DataFrame
:
Wenn ich das tue:
%Vor%Ich lande mit gut beschrifteten Hilfsstrichbeschriftungen auf der y-Achse des Bildes, aber die Beschriftungen sind 1901-1906 anstelle von 1901 bis 2101. Ebenso sind die tickbeschriftungen der x-Achse feb-jul anstelle von jan-dec.
Wenn ich
verwende %Vor%Dann am Ende mit den Achsen-Tick-Etiketten, die einfach die zugrundeliegenden ndarray-Indexwerte sind (d. h. 0-201 und 0-12). Ich muss den Abstand oder die Anzahl der Ticks und Beschriftungen nicht ändern. Ich möchte nur, dass der Beschriftungstext aus den DataFrame-Index- und Spaltenlisten kommt. Nicht sicher, ob ich etwas leicht vermisse oder nicht?
Vielen Dank im Voraus.
Als allgemeine Lösung habe ich festgestellt, dass die folgende Methode ein einfacher Weg ist, einen Pandas datetime64-Index in eine Matplotlib-Achsenbeschriftung zu bringen.
Erstellen Sie zuerst eine neue Serie, indem Sie den pandas datetime64-Index in eine Python-datetime.datetime-Klasse konvertieren.
new_series = your_pandas_dataframe.index.to_pydatetime()
Jetzt haben Sie alle Funktionen von matplotlib.dates. Zeichnen Sie vor dem Plotten matplotlib.dates als mdates ein und deklarieren Sie die folgenden Variablen:
%Vor%Erstellen Sie nun Ihre Plots mit der neuen_Serie als x-Achse:
%Vor%Sie können die oben erklärten Funktionen von mdates verwenden, um die Beschriftungen und Ticks zu Ihren Wünschen anzupassen, beispielsweise:
%Vor%Ich glaube, das Problem hat damit zu tun, dass die Tick-Labels für vorhandene Ticks spezifiziert werden. Standardmäßig gibt es weniger Ticks als Labels, daher werden nur die ersten Labels verwendet. Folgendes sollte funktionieren, indem zuerst die Anzahl der Ticks festgelegt wird.
%Vor%Dies erzeugt ein Häkchen für jedes Jahr auf der y-Achse, deshalb möchten Sie vielleicht eine Teilmenge der Indexwerte verwenden.
Ich habe herausgefunden, dass dies am einfachsten mit ImageGrid
ist. Hier ist der Code, um dies zu tun und der Plot + hier ist ein IPython-Notebook , das es in einem besser präsentierbaren Format zeigt:
Tags und Links python matplotlib pandas