Ich verwende Matplotlibs imshow()
Funktion, um eine pandas.DataFrame
anzuzeigen.pandas, matplotlib, benutze Dataframe-Index als Achsenstrichbezeichnungen
Ich möchte, dass die Labels und Ticks für X- und Y-Achsen aus den Listen DataFrame.Index und DataFrame.columns gezeichnet werden, aber ich kann nicht herausfinden, wie es geht.
dass data
Angenommen 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 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)
I mit schön beabstandeten Strichbeschriftungen auf der y-Achse des Bildes enden, aber die Markierungen 1901-1906 anstelle von 1901 bis 2101. Ebenso sind die Tick-Bezeichnungen der x-Achse feb-jul anstelle von jan-dec.
Wenn I
verwendenax1 = fig.add_subplot(131) # without specifying tick labels
dann am Ende I Etiketten mit der Achse tick up einfach die darunterliegende ndarray Indexwerte zu sein (das heißt 0 bis 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.
Dies ist die allgemeinste Lösung - keine Notwendigkeit für DateTime Hacks usw. – FuzzyDuck