1

imshow列インデックス (x 軸) と行インデックス (y 軸) に対して行列をプロットします。軸ラベルをインデックスではなく、インデックスの任意の関数にしたいと思います。

例:ピッチ検出

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 秒のオーディオの場合、 で 2 ティックが必要です[1,2]

y 軸のラベル付けは音符としてのピッチです。ピッチの音符にラベルが欲しい['c', 'd', 'e', 'f', 'g', 'a', 'b']

理想的には:

imshow(A, ylabel=lambda i: freqs[i], xlabel=lambda j: j/44100)

4

1 に答える 1

1

Locators とFormatters (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()
于 2012-09-29T17:31:18.330 に答える