44 lines
1.9 KiB
Python
44 lines
1.9 KiB
Python
import pandas as pd
|
||
import matplotlib.pyplot as plt
|
||
from matplotlib import font_manager
|
||
|
||
# 1. 设置中文字体(SimHei 或自行替换路径)
|
||
font_path = 'C:/Windows/Fonts/simhei.ttf' # 适用于 Windows
|
||
zh_font = font_manager.FontProperties(fname=font_path)
|
||
plt.rcParams['font.sans-serif'] = [zh_font.get_name()]
|
||
plt.rcParams['axes.unicode_minus'] = False # 解决负号乱码
|
||
|
||
# 2. 读取 CSV 数据
|
||
file_path = r"D:\WQ\zhanghuilai\hyperspectral-inversion\data\input\一代高光谱\output\chla画图.csv" # ← 替换为你的实际文件路径
|
||
df = pd.read_csv(file_path)
|
||
|
||
# 3. 预处理数据
|
||
df.columns = ['timestamp', 'chl_a']
|
||
df['timestamp'] = pd.to_datetime(df['timestamp'])
|
||
df['date'] = df['timestamp'].dt.date # 只保留年月日
|
||
|
||
# 4. 计算每日平均和标准差
|
||
daily_stats = df.groupby('date')['chl_a'].agg(['mean', 'std']).reset_index()
|
||
|
||
# 5. 绘图
|
||
fig, axs = plt.subplots(2, 1, figsize=(10, 8))
|
||
|
||
# 图 1:每日 chl-a 浓度柱状图(含误差线)
|
||
axs[0].bar(daily_stats['date'], daily_stats['mean'], yerr=daily_stats['std'],
|
||
capsize=4, color='skyblue', edgecolor='black')
|
||
axs[0].set_title('每日 chl-a 浓度均值(含标准差)', fontproperties=zh_font)
|
||
axs[0].set_xlabel('日期', fontproperties=zh_font)
|
||
axs[0].set_ylabel('chl-a 浓度', fontproperties=zh_font)
|
||
axs[0].tick_params(axis='x', rotation=45)
|
||
|
||
# 图 2:chl-a 浓度分布直方图
|
||
axs[1].hist(df['chl_a'], bins=30, color='lightgreen', edgecolor='black')
|
||
axs[1].set_title('chl-a 浓度分布直方图', fontproperties=zh_font)
|
||
axs[1].set_xlabel('chl-a 浓度', fontproperties=zh_font)
|
||
axs[1].set_ylabel('频数', fontproperties=zh_font)
|
||
|
||
# 6. 调整布局并保存图像
|
||
plt.tight_layout()
|
||
plt.savefig('D:\WQ\zhanghuilai\hyperspectral-inversion\data\input\一代高光谱\output\chl_a_图表.png', dpi=300, bbox_inches='tight') # 高分辨率保存
|
||
plt.show()
|