我正在使用matplotlib的imshow()
函數來顯示pandas.DataFrame
。pandas,matplotlib,使用數據幀索引作爲軸刻度標籤
我想爲x和y軸的標籤和刻度線從DataFrame.index和DataFrame.columns列表中繪製,但我無法弄清楚如何去做。
假設data
是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
當我這樣做:
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)
我結束了對圖像的y軸很好地間隔開的刻度標記,但是標記物是1901-1906而不是1901到2101.同樣,x軸刻度標籤是feb-jul而不是jan-dec。
如果我使用
ax1 = fig.add_subplot(131) # without specifying tick labels
然後我結束與軸刻度標記標籤簡單地是底層ndarray索引值(即0-201和0-12)。我不需要修改刻度和標籤的間距或數量,我只是希望標籤文本來自DataFrame索引和列列表。不知道我是否失去了一些容易或不容易?
在此先感謝。
這是最一般的解決方案 - 不需要日期時間黑客等。 – FuzzyDuck 2016-11-01 12:14:24