You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Obspy的spectrogram函数绘图时如何限制Y轴范围并解决报错

报错原因

ObsPy的Stream.spectrogram()方法在show=False、未指定axes参数时,返回的不是单个Matplotlib Figure对象,而是和Stream内通道数一一对应的Figure列表。你当前的Stream仅包含1道数据,因此fig是长度为1的列表,直接对列表调用axes属性自然会抛出不存在该属性的错误。

解决方案

这里提供两种可行的修改方式:

方案1:直接操作返回列表中的Figure对象

仅需要修改你代码的倒数第二行,取列表的第一个元素访问axes即可:

# 原报错行:fig.axes[0].set_ylim(0,100)
# 修改为:
fig[0].axes[0].set_ylim(0, 100)

方案2:提前手动创建Axes传入(更可控)

提前创建Matplotlib的画布和轴对象,传入spectrogram方法,直接操作自己定义的轴对象即可,适合后续要做更多自定义绘图的场景,完整修改后的绘图部分代码如下:

""" Plot the spectrogram """
# 提前创建画布和轴
fig, ax = plt.subplots()
# 将创建好的ax传入spectrogram的axes参数
st.spectrogram(log=False, dbscale=True, axes=ax, title='Spectrogram', cmap='inferno', show=False)
# 直接操作ax设置y轴范围
ax.set_ylim(0, 100)
plt.show()

内容的提问来源于stack exchange,提问作者Andrew Creel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 07:06:03