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

如何在xarray绘制的动态频谱中突出特定频率的强度数据?

在STEREO动态频谱图中突出特定频率区域

问题描述

我使用cdasws工具获取STEREO卫星数据绘制动态频谱,现有代码可生成基础频谱图,但需要在图中突出展示特定频率(例如636kHz)的强度区域——参考效果为在频谱图对应频率位置添加高亮带,并叠加该频率的强度时序曲线。我此前尝试用data_stereo.avg_intens_ahead.loc[:,625].plot()仅能生成独立时序图,对xarray操作不熟悉,求可行的实现方法。

解决方案

核心思路是先绘制原始动态频谱,再通过Matplotlib的高亮区域功能+Xarray的坐标筛选,实现特定频率的突出展示。以下是修改后的完整代码及说明:

修改后的完整代码

from cdasws import CdasWs
from cdasws.datarepresentation import DataRepresentation
import matplotlib.pyplot as plt
import numpy as np

cdas = CdasWs()

# 获取STEREO卫星SWAVES数据
data = cdas.get_data('STEREO_LEVEL2_SWAVES', ['avg_intens_ahead'],
                     '2020-07-11T02:00:00Z', '2020-07-11T03:00:00Z',
                     dataRepresentation = DataRepresentation.XARRAY)[1]

# 按频率排序数据,确保频谱图频率轴有序
sorted_data = data.sortby('FREQUENCY')

plt.figure(figsize=(15,7))
plt.xticks(fontsize=18)
plt.yticks(fontsize=18)
plt.yscale('log')

# 绘制原始动态频谱图
sorted_data.avg_intens_ahead.transpose().plot(cmap='viridis')

# 定义要突出的目标频率及高亮范围(以636kHz为例,上下浮动10kHz)
target_freq = 636
freq_low, freq_high = target_freq - 10, target_freq + 10

# 添加频率范围高亮带(半透明红色)
plt.axhspan(freq_low, freq_high, color='red', alpha=0.3)

# 筛选最接近目标频率的时序数据(Xarray按坐标匹配,自动找最近点)
closest_freq = sorted_data.FREQUENCY.sel(FREQUENCY=target_freq, method='nearest').values
freq_intensity = sorted_data.avg_intens_ahead.sel(FREQUENCY=closest_freq)

# 叠加该频率的强度时序曲线(红色实线突出)
freq_intensity.plot(color='red', linewidth=2, label=f'{closest_freq:.0f} kHz 强度')

plt.xlabel("时间", size=18)
plt.ylabel("频率 (kHz)", size=18)
plt.legend(fontsize=16)
plt.show()

关键操作说明

  • 数据排序:通过sortby('FREQUENCY')确保频谱图的频率轴是从小到大有序的,避免出现乱序的频谱分布。
  • 频率范围高亮:使用plt.axhspan()绘制水平方向的半透明高亮区域,精准覆盖目标频率的上下浮动范围,直观标记关注频段。
  • Xarray坐标筛选:用sel(FREQUENCY=target_freq, method='nearest')自动匹配最接近目标频率的数据点,无需手动计算索引,适配Xarray的多维数据结构。
  • 曲线叠加:将特定频率的强度时序曲线直接叠加在频谱图上,同步展示该频率随时间的强度变化,与高亮区域形成呼应。

内容的提问来源于stack exchange,提问作者new-to-coding

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 21:30:54