File size: 2,037 Bytes
5dedebd
c846304
f1f2090
28cc8f4
5dedebd
28cc8f4
6b4e7c6
9492e32
5dedebd
f1f2090
6b4e7c6
1d5a710
 
 
 
 
 
 
 
 
 
 
5dedebd
1d5a710
 
 
 
eb8dea9
 
5dedebd
9492e32
5dedebd
 
 
78de124
5dedebd
78de124
 
 
 
 
 
 
 
5dedebd
 
f13c4bb
28cc8f4
 
 
 
 
9492e32
2e905cb
9492e32
c846304
 
 
 
9492e32
 
c846304
9492e32
eb8dea9
c846304
5dedebd
9492e32
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
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