Matplotlib imshow:标签是图像索引的任意函数

Matplotlib imshow:标签是图像索引的任意函数,matplotlib,axis-labels,Matplotlib,Axis Labels,imshow根据其列索引(x轴)和行索引(y轴)绘制矩阵。我希望轴标签不是索引,而是索引的任意函数 e、 g.基音检测 imshow(A,aspect='auto')其中A.shape==(88200,8) 在x轴上,在大约[11000,22000,…,88000] 在y轴上,显示频率槽[0,1,2,3,4,5,6,7] 我想要的是: x轴标签从采样到秒进行规格化。对于采样率为44.1kHz的2秒音频,我希望在[1,2]处有两个滴答声 y轴标签是作为注释的节距。我想要音高注释中的标签['c','

imshow
根据其列索引(x轴)和行索引(y轴)绘制矩阵。我希望轴标签不是索引,而是索引的任意函数

e、 g.基音检测

imshow(A,aspect='auto')
其中
A.shape==(88200,8)

在x轴上,在大约
[11000,22000,…,88000]
在y轴上,显示频率槽
[0,1,2,3,4,5,6,7]

我想要的是:

x轴标签从采样到秒进行规格化。对于采样率为44.1kHz的2秒音频,我希望在
[1,2]
处有两个滴答声

y轴标签是作为注释的节距。我想要音高注释中的标签
['c','d','e','f','g','a','b']

理想情况下:


imshow(A,ylabel=lambda i:freqs[i],xlabel=lambda j:j/44100)
您可以结合使用
定位器和
格式化程序来实现这一点


您可以使用
定位器
s和
格式化程序
s的组合来实现这一点

ax = gca()
ax.imshow(rand(500,500))

ax.get_xaxis().set_major_formatter(FuncFormatter(lambda x,p :"%.2f"%(x/44100)))
ax.get_yaxis().set_major_locator(LinearLocator(7))
ax.get_yaxis().set_major_formatter(FixedFormatter(['c', 'd', 'e', 'f', 'g', 'a', 'b']))
draw()