0

ウェーブレット プレゼンテーションの視覚化を行っています。右側のこのようなプロットを準備する必要があります:

画像

私はスペクトログラムでこの目標を達成しようとしてきました.少なくともそのようなプロットの名前を見つけるために1時間以上努力しています.

このプロットは、さまざまなレベル (1、2、3、および 4) でのウェーブレット変換の詳細の係数を表します。左側には、しきい値を持つ関数が表示されます。係数値は色で表されます (0 に近い黒、より高い値のブラウニー)。

ウェーブレット分解のすべてのレベルで、係数の数は半分に減ります。したがって、1 レベルの小さな範囲のサンプル、4 レベルの 4 倍の大きなサンプルです。

どうやってやるの?

4

1 に答える 1

1

さて、あなたの質問は他のかなりの質問を想定していますが、 pcolormeshを探しているのではないかと思います。たとえば、このように使用されます(例の写真のようにグリッドに配置します。データはランダムに生成されます):

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()

結果は次のとおりです。

subplot2grid と pcolormesh

于 2016-04-21T09:27:54.087 に答える