自定义AxesImage的刻度?

hat*_*rix 8 python matplotlib

我创建了一个图像图ax = imshow().ax是一个AxesImage对象,但我似乎无法找到我需要的功能或属性来自定义刻度标签.在普通pyplots似乎都set_ticksset_ticklabels方法,但这些似乎并没有提供对AxesImage类.有任何想法吗?谢谢〜

Joe*_*ton 9

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

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

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

您可以访问此gca(),如果您使用的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()
Run Code Online (Sandbox Code Playgroud)

使用更加面向对象的方法(随机说明,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(...)
Run Code Online (Sandbox Code Playgroud)

希望能把事情搞清楚一点!