我的代码
import numpy as np
import matplotlib.pyplot as plt
with open('nm.dat','r') as f:
vst = map(float, f)
print vst
a=np.asarray(vst)
print len(a)
a11=a.reshape(4,22)
plt.imshow(a11, cmap='hot', interpolation='nearest')
plt.colorbar()
plt.show()
我希望我的x轴标有等距的0,8,16,24,32,40,48,56,64,72,80,88 ticks.Y轴为0,2,4,6, 8。 怎么解决这个?
答案 0 :(得分:8)
您在imshow中缺少范围参数。 imshow假设像素与您的“物理”单位之间存在线性关系。你可以使用:
plt.imshow(a11, cmap='hot', interpolation='nearest', extent=[0,88,0,8], origin='lower')
必须给出范围变量,使得范围= [xmin,xmax,ymin,ymax]。 origin ='lower'参数用于指定必须将[0,0]坐标放置在轴的左下角。否则,它位于轴的左上角。
最后,为了只显示某些特定的刻度,您可能需要使用:
ax = plt.gca()
xticks = [0,8,16,24,32,40,48,56,64,72,80,88]
yticks = [0,2,4,6,8]
ax.xaxis.set_xticks(xticks)
ax.xaxis.set_yticks(yticks)