我用ax = imshow()
创建了一个图像图。 ax
是一个AxesImage对象,但我似乎无法找到我需要的功能或属性来自定义刻度标签。 ordinary pyplots似乎有set_ticks
和set_ticklabels
方法,但这些方法似乎不适用于AxesImage类。有任何想法吗?谢谢〜
答案 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(...)
希望能稍微清理一下!