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

使用Matplotlib绘制指定GW数据集波形图求助(3440行数据)

修正代码以匹配引力波波形目标图

原代码存在的问题

  • 数据读取逻辑错误:原代码把空格分隔的两列数据读成单列后拆分,正确方式是直接通过read_csv指定分隔符
  • 拼写错误:df.coulumns应为df.columns
  • 未转换数据类型:拆分后的字符串需转为浮点型(时间和应变均为小数,不是整数)
  • 绘图类型不符:目标图是连续折线,应使用plt.plot()而非散点图plt.scatter()
  • 数据范围选取错误:前200行对应时间区间与目标图不符,应聚焦到目标图的核心时间范围(约-0.02s到0.01s)

修正后的代码

import pandas as pd
import matplotlib.pyplot as plt

# 直接读取空格分隔的数据集,指定列名
df = pd.read_csv('https://www.gw-openscience.org/GW150914data/P150914/fig2-unfiltered-waveform-H.txt', 
                 sep='\s+', 
                 names=['time (s)', 'strain (h1)'])

# 确保数据为浮点型(显式转换避免类型问题)
df['time (s)'] = df['time (s)'].astype(float)
df['strain (h1)'] = df['strain (h1)'].astype(float)

# 过滤出目标图对应的时间区间
mask = (df['time (s)'] >= -0.02) & (df['time (s)'] <= 0.01)
filtered_df = df[mask]

# 绘制匹配目标图的折线图
plt.figure(figsize=(14, 8))
plt.plot(filtered_df['time (s)'], filtered_df['strain (h1)'], color='blue', linewidth=0.8)
plt.xlabel('Time (s)')
plt.ylabel('Strain (h1)')
plt.title('GW150914 Unfiltered Waveform (H1)')
plt.grid(True, alpha=0.3)
plt.show()

代码说明

  • 使用sep='\s+'匹配任意数量的空格分隔符,直接读取两列数据,无需后续拆分操作
  • 显式转换数据类型,确保数值运算和绘图逻辑正常
  • 通过时间范围过滤,聚焦到目标图展示的波形核心区间
  • 用plt.plot()绘制连续折线,完全匹配目标图的样式
  • 添加坐标轴标签、标题和网格,让图表呈现效果更贴近目标图

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 04:50:27