自定义AxesImage的刻度?

时间:2010-09-15 09:29:29

标签: python matplotlib

我用ax = imshow()创建了一个图像图。 ax是一个AxesImage对象,但我似乎无法找到我需要的功能或属性来自定义刻度标签。 ordinary pyplots似乎有set_ticksset_ticklabels方法,但这些方法似乎不适用于AxesImage类。有任何想法吗?谢谢〜

1 个答案:

答案 0 :(得分:9)

对于它的价值,你有点误解了imshow()返回的内容,以及matplotlib轴的结构如何......

AxesImage对象负责显示的图像(例如色彩映射,数据等),但不负责图像所在的轴。它无法控制刻度和刻度标签等内容。

您要使用的是当前轴实例。

如果您正在使用gca()界面,则可以使用pylab访问此内容;如果您通过pyplot访问内容,则可以matplotlib.pyplot.gca访问此内容。但是,如果您使用其中任何一个,则可以使用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(...)

希望能稍微清理一下!