sleep_data / draw_db.py
thelou1s's picture
fix timezone
28cc8f4
raw history blame
No virus
1.76 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)
fig, axs = plt.subplots(rows, 1, sharex=True)
for key, value in kv_list.items():
if type(key) is str and type(value) is list:
axs[idx_axs].plot(date_list, value, 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