2016-04-20 14 views
0

Ich mache einige Visualisierungen für eine Wavelet-Präsentation. Ich brauche einen Plan ähnlich wie diese auf dem rechten Seite vorzubereiten:Visualisierung von Wavelets-Koeffizienten für verschiedene Dekonstruktionsebenen

Image

Ich habe versucht, dieses Ziel mit Spektrogramm zu erreichen, und ich versuche, für mehr als eine Stunde bei mindestens Namen einer solchen Handlung zu finden .

Dieses Diagramm zeigt die Koeffizienten der Details einer Wavelet-Transformation auf verschiedenen Ebenen (1, 2, 3 und 4). Auf der linken Seite sehen Sie eine Funktion mit einem Schwellenwert. Der Wert der Koeffizienten wird durch die Farbe dargestellt (schwarz nahe 0, brauner höherer Wert).

Mit jeder Stufe der Wavelet-Zerlegung wird die Anzahl der Koeffizienten um die Hälfte reduziert. Also eine Ebene kleine Bereiche von Proben, vier Ebenen vier mal größere Proben.

Wie kann ich das tun?

Antwort

1

Nun, Ihre Frage geht von einigen anderen Fragen aus, aber ich denke, Sie könnten nach pcolormesh suchen. Zum Beispiel auf diese Weise verwendet wird (ich es in einem grid setzen werde genau wie Ihr Beispiel Bild, werden die Daten zufällig generiert):

import matplotlib.pyplot as plt 
import numpy as np 

ax1 = plt.subplot2grid((4,4),(0, 0),rowspan=1,colspan=1) 
ax2 = plt.subplot2grid((4,4),(1, 0),rowspan=1,colspan=1) 
ax3 = plt.subplot2grid((4,4),(2, 0),rowspan=1,colspan=1) 
ax4 = plt.subplot2grid((4,4),(3, 0),rowspan=1,colspan=1) 

ax5 = plt.subplot2grid((4,4),(0, 1),rowspan=2,colspan=3) 
ax6 = plt.subplot2grid((4,4),(2, 1),rowspan=2,colspan=3) 

ax1.plot(range(100),np.random.randint(-100,100,100)/np.arange(1,101,1)**1,color='green') 
ax1.axhline(10,color='orange',linestyle='--') 
ax1.axhline(-10,color='orange',linestyle='--') 
ax1.set_ylim(-20,20) 
ax1.set_xticks([]) 
ax1.set_ylabel('D4',rotation=0) 

ax2.plot(range(100),np.random.randint(-100,100,100)/np.arange(1,101,1)**1,color='green') 
ax2.axhline(10,color='orange',linestyle='--') 
ax2.axhline(-10,color='orange',linestyle='--') 
ax2.set_ylim(-20,20) 
ax2.set_xticks([]) 
ax2.set_ylabel('D3',rotation=0) 

ax3.plot(range(100),np.random.randint(-100,100,100)/np.arange(1,101,1)**1,color='green') 
ax3.axhline(10,color='orange',linestyle='--') 
ax3.axhline(-10,color='orange',linestyle='--') 
ax3.set_ylim(-20,20) 
ax3.set_xticks([]) 
ax3.set_ylabel('D2',rotation=0) 

ax4.plot(range(100),np.random.randint(-100,100,100)/np.arange(1,101,1)**1,color='green') 
ax4.axhline(10,color='orange',linestyle='--') 
ax4.axhline(-10,color='orange',linestyle='--') 
ax4.set_ylim(-20,20) 
#ax4.set_xticks([]) 
ax4.set_ylabel('D1',rotation=0) 

X,Y = np.meshgrid(range(1000),range(4)) 
Z = np.random.randint(0,100,(4,1000)) 

ax5.pcolormesh(X,Y,Z,cmap = 'copper') 
ax5.set_yticks([i for i in range(4)]) 

Zm = np.ma.masked_where(Z<90,Z) 
ax6.pcolormesh(X,Y,Zm,cmap = 'copper') 
ax6.set_yticks([i for i in range(4)]) 

plt.show() 

Die Ergebnisse ist dies:

subplot2grid and pcolormesh

+0

Das heißt, dass wonach ich gesucht habe. Ammmazzzinggg !! : D Vielen Dank. –