上传文件至 /

This commit is contained in:
2025-07-22 10:27:31 +08:00
commit bd82850ce4
5 changed files with 658 additions and 0 deletions

66
data_spectral.py Normal file
View File

@ -0,0 +1,66 @@
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
from datetime import datetime
# 读取CSV文件
file_path = r"D:\WQ\zhanghuilai\hyperspectral-inversion\data\input\一代高光谱\2025-07-11_2025-07-21\筛选.csv" # 替换为你的文件路径
df = pd.read_csv(file_path)
# 获取第一列名(时间戳列)
timestamp_col = df.columns[0]
# 解析时间戳列注意格式2025/7/7 15:03
df[timestamp_col] = pd.to_datetime(df[timestamp_col], format='%Y-%m-%d %H:%M:%S')
# 提取日期列(用于分组)
df['Date'] = df[timestamp_col].dt.date
# 获取波长数据(第一行,跳过时间戳列)
# 尝试将列名转换为浮点数,如果失败则保持原样
wavelengths = []
for col in df.columns[1:-1]:
try:
wavelengths.append(float(col))
except ValueError:
wavelengths.append(col)
# 按日期分组计算平均光谱
daily_avg = df.groupby('Date')[df.columns[1:-1]].mean()
# 设置绘图参数
plt.figure(figsize=(12, 8))
plt.title('Daily Average Spectral Reflectance', fontsize=16)
plt.xlabel('Wavelength (nm)', fontsize=14)
plt.ylabel('Reflectance', fontsize=14)
plt.grid(True, alpha=0.3)
# 为每条曲线生成不同的颜色
colors = plt.cm.viridis(np.linspace(0, 1, len(daily_avg)))
# 绘制每条平均光谱曲线
for i, (date, row) in enumerate(daily_avg.iterrows()):
# 将日期格式化为更易读的形式
formatted_date = date.strftime('%Y-%m-%d')
# 绘制光谱曲线
plt.plot(wavelengths, row.values,
label=formatted_date,
color=colors[i],
linewidth=2)
# 添加图例
plt.legend(title='Date', bbox_to_anchor=(1.05, 1), loc='upper left')
# 优化布局
plt.tight_layout()
# 保存图像
plt.savefig(r'D:\WQ\zhanghuilai\hyperspectral-inversion\data\input\一代高光谱\2025-07-11_2025-07-21\plot\daily_average_spectra.png', dpi=300, bbox_inches='tight')
# 输出每日平均光谱数据到CSV
# daily_avg.to_csv('D:\WQ\zhanghuilai\hyperspectral-inversion\data\input\一代高光谱\daily_average_spectra.csv')
print("每日平均光谱数据已保存到 daily_average_spectra.csv")
print("光谱图已保存到 daily_average_spectra.png")