HDF5数据绘图报错t未定义:LIGO引力波数据可视化求助
问题解决:变量
t未定义的原因及修复代码 核心问题
你定义了读取数据的loadLIGOdata函数,但没有调用这个函数去获取t和strain变量,导致后续绘图时这两个变量不存在,触发未定义错误。
修正后的完整代码
import matplotlib.pyplot as plt import numpy as np import h5py def loadLIGOdata(file_path): # 用with语句自动管理文件资源,无需手动关闭 with h5py.File(file_path, "r") as f: strain = f['strain/Strain'][...] t0 = f['strain/Strain'].attrs['Xstart'] dt = f['strain/Strain'].attrs['Xspacing'] t = t0 + dt * np.arange(strain.shape[0]) return t, strain # 调用函数读取数据,替换为你的Hanford文件实际路径(比如"./Hanford.h5") t, strain = loadLIGOdata("Hanford") # 绘制应变-时间曲线 plt.figure(figsize=(12, 6)) plt.plot(t, strain) plt.xlabel('时间(秒)') plt.ylabel('应变') plt.title('LIGO Hanford 引力波应变数据') plt.show()
额外优化说明
- 改用
with语句处理HDF5文件,避免忘记关闭文件造成的资源泄漏 - 给函数参数重命名为
file_path,提升代码可读性 - 添加坐标轴标签和标题,让可视化结果更直观
内容的提问来源于stack exchange,提问作者NSA
相关产品推荐
相关产品推荐

