imshow: labels als beliebige Funktion der Bildindizes
imshow
Zeichnet eine Matrix gegen ihre Spaltenindizes (x-Achse) und Zeilenindizes (y-Achse). Ich möchte, dass die Achsenbeschriftungen keine Indizes sind, sondern eine willkürliche Funktion der Indizes.
z.B. Tonhöhenerkennung
imshow(A, aspect='auto')
woherA.shape == (88200,8)
in der x-achse zeigt mehrere ticks bei etwa[11000, 22000, ..., 88000]
Zeigt auf der y-Achse den Frequenzbereich an[0,1,2,3,4,5,6,7]
Was ich will ist:
x-Achsen-Beschriftungen werden von Samples zu Sekunden normalisiert. Für einen 2 Sekunden langen Ton mit einer Samplerate von 44,1 kHz möchte ich zwei Ticks bei[1,2]
.
Die Beschriftung der y-Achse ist die Tonhöhe als Note. Ich möchte die Etiketten in der Note der Tonhöhe['c', 'd', 'e', 'f', 'g', 'a', 'b']
.
im Idealfall:
imshow(A, ylabel=lambda i: freqs[i], xlabel=lambda j: j/44100)