2016-02-15 79 views
0

我試圖使用imshow顯示2D數據的熱圖,並且我想更新標籤以反映我的數據。但事情混淆當我使用get_x/yticklabels:現在使用imshow混淆刻度標籤

fig, axes = plt.subplots() 
axes.imshow(np.random.rand(5,5), interpolation='none') 
fig.canvas.draw() # or just draw() 
[t.get_text() for t in axes.get_yticklabels()] 
# >>> [u'0.0', u'0', u'1', u'2', u'3', u'4', u''] 
[t.get_text() for t in axes.get_xticklabels()] 
# >>> [u'0', u'1', u'2', u'3', u'4', u'5', u'6', u'7', u''] 

set_xticklabels,我需要給它的長度相同陣列作爲標籤,但你可以看到有這些空白標籤,所以我不知道如何繼續我的腳本。

回答

0

除了手動編輯刻度標記的,請嘗試使用extent參數imshow

程度:標量(左,右,底,頂),可選,默認:無

數據座標中左下角和右上角的位置。如果爲None,則圖像的位置應使像素中心落在基於零(行,列)的索引上。

Source

這應該使它自動計算基於您的陣列的大小和每個軸上的上限和下限的蜱。

+0

我不清楚如何使用'extent'參數。我正在使用imshow,因爲ticklabels的位置集中在熱圖的各個點上。用範圍論證來玩弄似乎讓這件事變得糟糕透頂。此外,實際上我想將文本標籤應用於至少一個軸(即A,B,C等) – bernie