diff --git a/saber/__init__.py b/saber/__init__.py index 1c76b96..8aee9e3 100644 --- a/saber/__init__.py +++ b/saber/__init__.py @@ -70,7 +70,7 @@ def get_days(): def do_plot_wave_day_fitting(): path = request.args.get("path") day = request.args.get("day") - height = request.args.get("height") + height = request.args.get("height_no") ncfile = data_nc_load(path) processor = get_processer() diff --git a/tidi/plot.py b/tidi/plot.py index 05e905f..d3b9dd8 100644 --- a/tidi/plot.py +++ b/tidi/plot.py @@ -1,3 +1,4 @@ +import os import pandas as pd import numpy as np from scipy.io import loadmat @@ -755,27 +756,39 @@ class TidiPlotv2: def __init__(self, year): self.year = year - + if os.path.exists(f"./tidi/cache/{year}/all_days_vzonal_results.parquet") \ + and os.path.exists(f"./tidi/cache/{year}/all_days_vmeridional_results.parquet"): + all_days_vzonal_results = pd.read_parquet(f"./tidi/cache/{year}/all_days_vzonal_results.parquet") + all_days_vmeridional_results = pd.read_parquet(f"./tidi/cache/{year}/all_days_vmeridional_results.parquet") + else: - all_days_vzonal_results = pd.DataFrame() + all_days_vzonal_results = pd.DataFrame() - # 循环处理每一天的数据 - for day in range(1, 365): - u2 = process_vzonal_day(day, year) - all_days_vzonal_results[rf"{day:02d}"] = u2 + # 循环处理每一天的数据 + for day in range(1, 365): + u2 = process_vzonal_day(day, year) + all_days_vzonal_results[rf"{day:02d}"] = u2 - # 将结果按列拼接 - all_days_vzonal_results.columns = [f"{day:02d}" for day in range(1, 365)] - # 初始化一个空的DataFrame来存储所有天的结果 - all_days_vmeridional_results = pd.DataFrame() + # 将结果按列拼接 + all_days_vzonal_results.columns = [f"{day:02d}" for day in range(1, 365)] + # 初始化一个空的DataFrame来存储所有天的结果 + all_days_vmeridional_results = pd.DataFrame() - # 循环处理每一天的数据 - for day in range(1, 365): - v2 = process_vmeridional_day(day, year) - all_days_vmeridional_results[rf"{day:02d}"] = v2 + # 循环处理每一天的数据 + for day in range(1, 365): + v2 = process_vmeridional_day(day, year) + all_days_vmeridional_results[rf"{day:02d}"] = v2 - # 将结果按列拼接 - all_days_vmeridional_results.columns = [f"{day:02d}" for day in range(1, 365)] + # 将结果按列拼接 + all_days_vmeridional_results.columns = [f"{day:02d}" for day in range(1, 365)] + + # cache the results + # if dir not exists, create it + if not os.path.exists(f"./tidi/cache/{year}"): + os.makedirs(f"./tidi/cache/{year}") + + all_days_vzonal_results.to_parquet(f"./tidi/cache/{year}/all_days_vzonal_results.parquet") + all_days_vmeridional_results.to_parquet(f"./tidi/cache/{year}/all_days_vmeridional_results.parquet") self.all_days_vzonal_results = all_days_vzonal_results self.all_days_vmeridional_results = all_days_vmeridional_results @@ -823,6 +836,7 @@ class TidiPlotv2: dates = self.dates months = self.months '''绘图''' + plt.clf() plt.rcParams['font.family'] = 'SimSun' # 宋体 plt.rcParams['font.size'] = 12 # 中文字号 plt.rcParams['axes.unicode_minus'] = False # 正确显示负号 @@ -888,6 +902,8 @@ class TidiPlotv2: months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"] + # clear the last plot + plt.clf() # 绘制折线图 plt.plot(months, monthly_average, marker='o', linestyle='-', color='b')