我正在尝试为频谱图添加一个Colorbar。我已经尝试了所有在网上找到的示例和问题线程,但是没有解决这个问题。
请注意,'spl1'(数据拼接1)是来自ObsPy的跟踪。
我的代码如下:
它出现了错误:
我似乎找不到让右侧的色条正常工作的方法。
解决方案?
其中一个解决方案是使用imshow()创建数据的“图像”,但是我从Spectrogram()中没有得到输出,只有“ax”。我看到有些地方尝试使用spectrogram()的“ax,spec”输出,但这会导致TypeError。
请注意,'spl1'(数据拼接1)是来自ObsPy的跟踪。
我的代码如下:
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)
它出现了错误:
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行替换为:
ax = spectrogram(spl1[0].data,spl1[0].stats.sampling_rate, show=False, axes=ax2)
ax2.set_ylim(0.1, 15)
fig.colorbar(ax,cax=ax3)
生成以下内容:
![波形和频谱图](https://istack.dev59.com/0ZZYR.webp)
并且会出现关于色条的错误:
axes object has no attribute 'autoscale_None'
我似乎找不到让右侧的色条正常工作的方法。
解决方案?
其中一个解决方案是使用imshow()创建数据的“图像”,但是我从Spectrogram()中没有得到输出,只有“ax”。我看到有些地方尝试使用spectrogram()的“ax,spec”输出,但这会导致TypeError。
- 我找到了非常相似的代码,但是没有起作用 https://www.nicotrebbin.de/wp-content/uploads/2012/03/bachelorthesis.pdf (ctrl+f 'colorbar')
- 查看了相关问题的代码示例 from a related question
- imshow() suggestions 和 example - 无法将 spectrogram 的输出转换为图像。在第二个链接中,我也无法让 mlpy 模块工作(它认为没有 mlpy.wavelet 函数)
- 这个问题在 obspy 的改进帖子 中得到了解决,但他所说的解决方案并没有给出
我希望有人能帮忙 - 我已经在做这个工作一整天了!