Spaces:
Sleeping
Sleeping
| import math | |
| import os | |
| import dateutil.tz | |
| import matplotlib.pyplot as plt | |
| import matplotlib.dates as mdates | |
| from util.debug import DEBUG | |
| from util.debug import debug_print | |
| def up_down_list(_list): | |
| min_value = min(_list) | |
| max_value = max(_list) | |
| return [-(x - min_value) + max_value for x in _list] | |
| def min_max_list(src_list, tar_min, tar_max): | |
| src_min = min(src_list) | |
| src_max = max(src_list) | |
| src_range = abs(src_max - src_min) | |
| tar_range = abs(tar_max - tar_min) | |
| scale_ratio = 0 if src_range == 0 else tar_range / src_range | |
| floor_up = [v - src_min for v in src_list] | |
| scale_to = [v * scale_ratio for v in floor_up] | |
| floor_down = [v + tar_min for v in scale_to] | |
| return floor_down | |
| def draw_lists(title='', date_list=None, **kv_list): | |
| debug_print('draw_lists, date_list = ', str(date_list)) | |
| idx_list = 0 | |
| idx_axs = 0 | |
| rows = math.ceil(len(kv_list.items()) / 3) + 1 | |
| fig, axs = plt.subplots(rows, 1, sharex=True) | |
| for key, values in kv_list.items(): | |
| if type(key) is str and type(values) is list: | |
| if key == 'predict': | |
| axs[rows - 1].plot(date_list, values, label=key) | |
| axs[rows - 1].legend() | |
| else: | |
| axs[idx_axs].plot(date_list, values, label=key) | |
| axs[idx_axs].legend() | |
| idx_list = idx_list + 1 | |
| idx_axs = int(idx_list / 3) | |
| # tz = dateutil.tz.gettz('Asia/Shanghai') | |
| # # date_format = date_list.DateFormatter('%d-%m-%Y') | |
| # plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%b/%d %H:%M', tz=tz)) | |
| # # plt.gca().xaxis.set_major_formatter(date_format) | |
| # plt.xticks(rotation=25) | |
| plt.gcf().autofmt_xdate() | |
| axs[0].set_title(title) | |
| tmp_dir = 'tmp' | |
| if not os.path.exists(tmp_dir): | |
| os.mkdir(tmp_dir) | |
| if DEBUG: | |
| # plt.show() | |
| file_uri = tmp_dir + '/' + title + '.png' | |
| fig.savefig(file_uri) | |
| else: | |
| file_uri = tmp_dir + '/' + title + '.png' | |
| fig.savefig(file_uri) | |
| return fig | |