sleep_data / draw_db.py
Luis Wu
draw predict
78de124
raw
history blame
1.93 kB
import math
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)
if DEBUG:
# plt.show()
file_uri = '.doc/' + title + '.png'
fig.savefig(file_uri)
else:
file_uri = '.doc/' + title + '.png'
fig.savefig(file_uri)
return fig