imshow
根据列索引(x轴)和行索引(y轴)绘制矩阵。我希望轴标签不是索引,而是索引的任意函数。
e.g。音高检测
imshow(A, aspect='auto')
其中A.shape == (88200,8)
显示大约[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)
答案 0 :(得分:1)
您可以结合使用Locator
和Formatter
s (doc)来执行此操作。
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()