2010-09-15 38 views
8

我已使用ax = imshow()創建了一幅圖像。 ax是一個AxesImage對象,但我似乎無法找到我需要訪問以定製刻度標籤的函數或屬性。 ordinary pyplots似乎有set_ticksset_ticklabels方法,但這些方法似乎不適用於AxesImage類。有任何想法嗎?謝謝〜爲AxesImage定製刻度?

回答

8

對於它的價值,你稍微誤解什麼imshow()回報,軸如何matplotlib一般是結構化...

的AxesImage對象負責顯示的圖像(例如色彩映射表,數據,等等),但不是圖像所在的軸。它不能控制諸如刻度和刻度標籤之類的東西。

你想要使用的是當前的軸實例。

如果您使用的是pylab接口,您可以使用或matplotlib.pyplot.gca訪問,如果您通過pyplot訪問事物。但是,如果您使用其中一種,則可以使用xticks()函數來獲取/設置xtick標籤和位置。

例如(使用pylab):

import pylab 
pylab.figure() 
pylab.plot(range(10)) 
pylab.xticks([2,3,4], ['a','b','c']) 
pylab.show() 

使用更多的面向對象的方法(在一個隨機筆記,matplotlib的getter和setter人煩很快...):

import matplotlib.pyplot as plt 
import numpy as np 
fig = plt.figure() 
ax = fig.add_subplot(1,1,1) # Or we could call plt.gca() later... 
im = ax.imshow(np.random.random((10,10))) 
ax.set_xticklabels(['a','b','c','d']) # Or we could use plt.xticks(...) 

希望能夠澄清一些事情!

+0

是!謝謝 - 我曾預料它會有點類似於matlab中image()返回軸句柄。該對象的名稱也有點誤導...我也注意到關於getter/setter也!在matlab中,我經常使用'cellarray {:}'符號將參數傳遞給axis setters,這個符號就像python的'* args'和'** kwargs'語法一樣,但是在這種情況下它不那麼簡單肯定有辦法繞過它)。 – hatmatrix 2010-09-16 03:37:29