スペクトログラムにカラーバーを追加しようとしています。私はすべての例と質問スレッドをオンラインで見つけましたが、この問題は解決していません。スペクトログラムにカラーバーを追加する
「spl1」(データスプライス1)はObsPyからのトレースです。
私のコードは次のようになります。これまでの
Traceback (most recent call last):
File "<ipython-input-18-61226ccd2d85>", line 14, in <module>
ax,spec = spectrogram(spl1[0].data,spl1[0].stats.sampling_rate, show=False, axes=ax2)
TypeError: 'Axes' object is not iterable
ベストの結果:
して上記の最後の3行を交換
fig = plt.figure()
ax1 = fig.add_axes([0.1, 0.75, 0.7, 0.2]) #[left bottom width height]
ax2 = fig.add_axes([0.1, 0.1, 0.7, 0.60], sharex=ax1)
ax3 = fig.add_axes([0.83, 0.1, 0.03, 0.6])
t = np.arange(spl1[0].stats.npts)/spl1[0].stats.sampling_rate
ax1.plot(t, spl1[0].data, 'k')
ax,spec = spectrogram(spl1[0].data,spl1[0].stats.sampling_rate, show=False, axes=ax2)
ax2.set_ylim(0.1, 15)
fig.colorbar(spec, cax=ax3)
は、それはエラーで出てきます:
やカラーバーのために、このエラー:
はこれを作成し
axes object has no attribute 'autoscale_None'
私が働く権利の上にカラーバーを取得する方法を見つけることができるようには見えません。
解決方法?
私が見た解決策の1つは、imshow()を使用してデータの「イメージ」を作成する必要があるということですが、Spectrogram()からの出力は得られません。私はspectrogram()からの 'ax、spec'の出力を試してみたところ、TypeErrorを引き起こしています。からの出力を得ることができない - 私が見つかりましたが、https://www.nicotrebbin.de/wp-content/uploads/2012/03/bachelorthesis.pdf(CTRL + F 'カラーバーを')動作しませんでした
- 非常に類似したコードは
- は、コード例でfrom a related question
- imshowを()suggestionsとexampleを見てスペクトログラムは画像に変わります。私もmlpyモジュールが仕事を得ることができない第2のリンク、(それはmlpy.wavelet機能があると思うしません)
- この問題はan improvement post for obspyで対処されましたが、彼が見つけ、彼は述べた溶液は
私は誰かがこれを手渡すことができることを願っています - 私は今一日中作業しています!
はあなたが成功したカラーバーのないスペクトログラムをプロットしたことがありますか?あなたが使っている ''スペクトログラム ''関数(ライブラリから)は何ですか? – gsmafra
@gsmafra私は上記の情報をより多くの情報で更新しました。スペクトログラムは通常はyesにプロットすることができます。スペクトログラム機能はobspy.imaging.spectrogram.spectrogram(より簡単な組み込み機能を備えています)ですが、その下にはspecgram – mjp
という進行中のディスカッションがあります:https://github.com/obspy/obspy/issues/1086カラーバープロットが成功しています。私の状況では機能しませんが、解決策が見つかった場合は、ここでも解決策を追加します。 – mjp