pandas, matplotlib, verwenden Sie dataframe index als Beschriftung der hilfsstriche
Ich bin mit matplotlib ist imshow()
Funktion zu zeigen pandas.DataFrame
.
Möchte ich die Etiketten und die hilfsstriche für x-und y-Achsen gezeichnet werden, aus dem DataFrame.index und DataFrame®.Spalten Listen, aber ich kann nicht herausfinden, wie es zu tun.
Unter der Annahme, dass data
ist ein pandas.DataFrame
:
>>> print data
<class 'pandas.core.frame.DataFrame'>
Index: 201 entries, 1901 to 2101
Data columns:
jan 201 non-null values
feb 201 non-null values
mar 201 non-null values
apr 201 non-null values
may 201 non-null values
jun 201 non-null values
jul 201 non-null values
aug 201 non-null values
sep 201 non-null values
oct 201 non-null values
nov 201 non-null values
dec 201 non-null values
Wenn ich dies tun:
ax1 = fig.add_subplot(131, xticklabels=data.columns, yticklabels=data.index)
ax1.set_title("A")
ax1.tick_params(axis='both', direction='out')
im1 = ax1.imshow(data,
interpolation='nearest',
aspect='auto',
cmap=cmap )
Ich am Ende mit schön Abstand der hilfsstriche auf der y-Achse des Bildes, aber die Etiketten sind 1901-1906 anstelle von 1901-thru-2101. Ebenso die x-Achsen-tick-Beschriftungen sind feb-jul anstelle von jan-Dez.
Wenn ich
ax1 = fig.add_subplot(131) # without specifying tick labels
Dann habe ich am Ende die hilfsstrichbeschriftungen der Achse einfach nur die zugrunde liegenden ndarray-index-Werte (d.h. 0-201 und 0-12). Ich brauche nicht zu ändern, den Zeilenabstand oder die Anzahl der ticks und labels, ich will nur den label-text zu kommen aus dem DataFrame-index und Spalte. Nicht sicher, ob mir etwas fehlt einfach, oder nicht?
Vielen Dank im Voraus.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als eine Allgemeine Lösung, die ich gefunden habe, die folgende Methode, um eine einfache Möglichkeit, um die Pandas datetime64 index in einer matplotlib Achse label.
Erstellen Sie zunächst eine neue Serie durch die Umwandlung der pandas datetime64 index um ein Python-datetime.datetime-Klasse.
new_series = your_pandas_dataframe.index.to_pydatetime()
Jetzt haben Sie alle Funktionen von matplotlib.Termine. Vor dem zeichnen, import matplotlib.Termine mdates und deklarieren Sie die folgenden Variablen:
Nun, machen Sie Ihre plots, mit dem new_series als die x-Achse:
Können Sie die mdates Funktionen erklärt, die oben zu zwicken, die Aufkleber und die Zecken auf Ihre angenehme, wie:
Ich glaube, das Problem hat zu tun mit der Angabe die Beschriftungen der hilfsstriche für die vorhandenen Zecken. Standardmäßig gibt es weniger Zecken als Etiketten, so dass nur die ersten paar Etiketten verwendet werden. Die folgenden arbeiten sollten, indem Sie zunächst die Einstellung der Anzahl der Zecken.
Dadurch entsteht ein Häkchen für jedes Jahr auf der y-Achse, so dass Sie möglicherweise verwenden möchten, eine Teilmenge der index-Werte.
Habe ich herausgefunden, dass der einfachste Weg, dies zu tun ist mit
ImageGrid
. Hier ist der code, dies zu tun und der plot + hier ist eine IPython notebook, die zeigt, dass Sie in einer mehr vorzeigbar format: