Używam funkcji imshow()
matplotlib, aby pokazać pandas.DataFrame
.pandy, matplotlib, używaj indeksu ramek danych jako etykiet podziałki osi
Chciałbym, aby etykiety i tyknięcia dla osi X i Y były rysowane z list DataFrame.index i DataFrame.columns, ale nie mogę wymyślić, jak to zrobić.
Zakładając, że data
jest 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
Kiedy to zrobić:
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 skończyć z dobrze rozmieszczonymi etykiet podziałki na osi y obrazu, ale etykiety są 1901-1906 zamiast 1901 do 2101. Podobnie, znacznikami osi X są feb-jul zamiast jan-dec.
Jeśli użyć
ax1 = fig.add_subplot(131) # without specifying tick labels
Wtedy kończy się z etykiety osi kleszczy Samo przetwarzanych wartości indeksu ndarray (tj 0-201 i 0-12). Nie muszę modyfikować odstępów lub ilości znaczników i etykiet, chcę tylko, aby tekst etykiety pochodził z indeksu DataFrame i list kolumn. Nie jestem pewien, czy brakuje mi czegoś łatwego, czy nie?
Z góry dziękuję.
Jest to najbardziej ogólne rozwiązanie - nie ma potrzeby hackowania DateTime itp. – FuzzyDuck