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

INTERMAGNET地磁数据时间序列图绘制异常问题求助

问题:地磁数据时间序列图与INTERMAGNET官网不一致的解决方法

问题背景

为开展研究,从INTERMAGNET下载了2013年1月1日至12月31日的THL(格陵兰Qaanaaq)地磁数据,尝试绘制X分量时间序列图,但结果与官网生成的图差异明显:

INTERMAGNET官网生成的图

INTERMAGNET官网地磁X分量时间序列图

自制图

自制地磁X分量时间序列图

使用的绘图代码如下:

import pandas as pd
import matplotlib.pyplot as plt

# 读取csv文件
df = pd.read_csv('data/thl_data.csv')

# 将日、月、年、时、分列转换为datetime
df['date'] = pd.to_datetime(df[['year', 'month', 'day', 'hour', 'minute']])

# 设置date为索引
df = df.set_index('date')

# 筛选2013年1月1日至12月31日的数据
start_date = '2013-01-01'
end_date = '2013-12-31'
df = df.loc[start_date:end_date]

# 绘制x值
plt.figure(figsize=(18,12))
plt.plot(df['x'], label='x')
plt.xlabel('Time')
plt.ylabel('X (nT)')
plt.title('THL (Qaanaaq (Thule), Greenland)')
plt.legend()
plt.show()

尝试过按日重采样取平均值,但绘制结果仍与未采样版本相似,无法匹配官网图。数据样例:

day,month,year,hour,minute,x,y,z
1,1,2013,0,1,26104,-31575,562205
1,1,2013,0,2,26105,-31584,562201
1,1,2013,0,3,26109,-31593,562197
1,1,2013,0,4,26115,-31597,562197
1,1,2013,0,5,26113,-31611,562190
1,1,2013,0,6,26112,-31605,562195
1,1,2013,0,7,26106,-31604,562195
1,1,2013,0,8,26111,-31594,562202
1,1,2013,0,9,26111,-31596,562203
1,1,2013,0,10,26116,-31598,562202
1,1,2013,0,11,26113,-31596,562203
1,1,2013,0,12,26114,-31599,562202
1,1,2013,0,13,26110,-31604,562201
1,1,2013,0,14,26114,-31598,562206
1,1,2013,0,15,26124,-31587,562211
...

解决思路与方法

1. 匹配INTERMAGNET的数据处理逻辑

INTERMAGNET官网展示的地磁图通常是去除长期趋势的扰动值,而非原始绝对值。原始数据包含年际/季节等缓慢变化的长期趋势,而官网图重点展示短周期地磁活动(比如地磁暴、日变化),因此需要:

  • 计算X分量的长期基线(比如月均值或年均值),用原始X值减去基线得到扰动值ΔX,再绘制ΔX的时间序列。
  • 示例代码:
# 计算月均值作为基线
df['x_monthly_mean'] = df['x'].resample('M').transform('mean')
# 计算扰动值
df['x_disturbance'] = df['x'] - df['x_monthly_mean']

# 绘制扰动值
plt.figure(figsize=(18,12))
plt.plot(df['x_disturbance'], label='ΔX')
plt.xlabel('Time')
plt.ylabel('ΔX (nT)')
plt.title('THL (Qaanaaq (Thule), Greenland) - X Component Disturbance')
plt.legend()
plt.show()

2. 使用小时均值而非原始分钟数据

INTERMAGNET的官方图一般采用小时均值来平滑高频噪声,而不是原始分钟数据:

# 按小时重采样取均值
df_hourly = df.resample('H').mean()

# 绘制小时均值的X分量(或其扰动值)
plt.figure(figsize=(18,12))
plt.plot(df_hourly['x'], label='Hourly Mean X')
plt.xlabel('Time')
plt.ylabel('X (nT)')
plt.title('THL (Qaanaaq (Thule), Greenland) - Hourly Mean X')
plt.legend()
plt.show()

3. 检查数据的坐标系统

部分地磁数据可能存在分量转换(比如从地磁坐标转换为地理坐标),确认下载的数据分量是否与官网展示的一致。INTERMAGNET通常提供的是地磁坐标下的X(北向)、Y(东向)、Z(垂直向下)分量,若你的数据是其他坐标系,需要进行转换。

4. 验证时间索引的正确性

确保pd.to_datetime生成的时间索引准确,比如确认时间序列无缺口或重复(你的数据样例中分钟从1开始属于正常的分钟级采样,无需调整)。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 08:22:05