예제 #1
0
def timeline(list, title, name):
    attr = Faker.choose()
    tl = Timeline()
    for i in list:
        x_list = ['每日死亡', '累计死亡', '每日确诊', '累计确诊']
        y_list = []
        for x in range(5, 9):
            y_list.append(i[x])
        histogram = (Bar().add_xaxis(x_list).add_yaxis(
            name, y_list, color=Faker.rand_color()))
        tl.add(histogram, "{}年".format(transform_time(i[0])))
    return tl
예제 #2
0
def CumulativeConfirmed_histogram(list, title, name):
    x_list = []
    y_list = []
    for i in list:
        x_list.append(transform_time(i[0]))
        y_list.append(i[8])
    histogram = (Bar().add_xaxis(x_list).add_yaxis(
        '累计确诊', y_list,
        color=Faker.rand_color()).set_global_opts(datazoom_opts=[
            opts.DataZoomOpts(),
            opts.DataZoomOpts(type_="inside")
        ], ).set_series_opts(label_opts=opts.LabelOpts(is_show=False)))
    return histogram
예제 #3
0
def COVID_Data(file, day, timeStamp):
    #定义一个总的列表,里面存放所有数据,再定义一个字典,存放时间和每天的数据,再一个列表存放每天每个国家的数据
    #累计确诊 TC ,新增确诊 NC ,累计死亡 TD ,新增死亡 ND
    # 这是总列表
    TC_Total_list = []
    NC_Total_list = []
    TD_Total_list = []
    ND_Total_list = []
    # 四个数据最大数
    TC_max = 0
    NC_max = 0
    TD_max = 0
    ND_max = 0
    # 四个数据,每个数据的每天总和的列表
    TC_day_sum = []
    NC_day_sum = []
    TD_day_sum = []
    ND_day_sum = []
    while day <= timeStamp:
        # 这是字典,存放每天的数据
        TC_day_dict = {"time": transform_time(day)}
        NC_day_dict = {"time": transform_time(day)}
        TD_day_dict = {"time": transform_time(day)}
        ND_day_dict = {"time": transform_time(day)}
        # 这是列表,被上面那个字典包含
        TC_day_data = []
        NC_day_data = []
        TD_day_data = []
        ND_day_data = []
        # 每天的总和
        TC = 0
        NC = 0
        TD = 0
        ND = 0
        #先计算下四个数据每日总和
        for i in range(len(file)):
            if day == file[i][0]:  # 时间戳是不是一样
                if ND_max <= file[i][5]:
                    ND_max = file[i][5]
                if TD_max <= file[i][6]:
                    TD_max = file[i][6]
                if NC_max <= file[i][7]:
                    NC_max = file[i][7]
                if TC_max <= file[i][8]:
                    TC_max = file[i][8]
                ND = ND + file[i][5]
                TD = TD + file[i][6]
                NC = NC + file[i][7]
                TC = TC + file[i][8]
        for i in range(len(file)):
            # 这是每天每个国家的数据列表
            TC_list = []
            NC_list = []
            TD_list = []
            ND_list = []
            # 字典
            TC_dict = {}
            NC_dict = {}
            TD_dict = {}
            ND_dict = {}
            if day == file[i][0]:  # 时间戳是不是一样
                name = file[i][2]
                tc = file[i][8]
                if TC != 0:
                    percent_1 = tc / TC * 100
                else:
                    percent_1 = 0
                TC_list.append(tc)
                TC_list.append(percent_1)
                TC_list.append(name)
                TC_dict['name'] = name
                TC_dict['value'] = TC_list
                TC_day_data.append(TC_dict)

                nc = file[i][7]
                if NC != 0:
                    percent_2 = nc / NC * 100
                else:
                    percent_2 = 0
                NC_list.append(nc)
                NC_list.append(percent_2)
                NC_list.append(name)
                NC_dict['name'] = name
                NC_dict['value'] = NC_list
                NC_day_data.append(NC_dict)

                td = file[i][6]
                if TD != 0:
                    percent_3 = td / TD * 100
                else:
                    percent_3 = 0
                TD_list.append(td)
                TD_list.append(percent_3)
                TD_list.append(name)
                TD_dict['name'] = name
                TD_dict['value'] = TD_list
                TD_day_data.append(TD_dict)

                nd = file[i][5]
                if ND != 0:
                    percent_4 = nd / ND * 100
                else:
                    percent_4 = 0
                ND_list.append(nd)
                ND_list.append(percent_4)
                ND_list.append(name)
                ND_dict['name'] = name
                ND_dict['value'] = ND_list
                ND_day_data.append(ND_dict)

        day = day + 86400000

        TC_day_sum.append(TC)
        TC_day_dict['data'] = TC_day_data
        TC_Total_list.append(TC_day_dict)

        NC_day_sum.append(NC)
        NC_day_dict['data'] = NC_day_data
        NC_Total_list.append(NC_day_dict)

        TD_day_sum.append(TD)
        TD_day_dict['data'] = TD_day_data
        TD_Total_list.append(TD_day_dict)

        ND_day_sum.append(ND)
        ND_day_dict['data'] = ND_day_data
        ND_Total_list.append(ND_day_dict)

    data = [
        TC_Total_list, TC_max, TC_day_sum, NC_Total_list, NC_max, NC_day_sum,
        TD_Total_list, TD_max, TD_day_sum, ND_Total_list, ND_max, ND_day_sum
    ]

    return data
예제 #4
0
    f = open(
        os.path.dirname(os.getcwd()) + '/crawler/ByTime_COVID-19.json', 'r')
    # 获得一个字典格式的数据
    data = json.load(f)
    # 从字典中提取出疫情数据所在的列表
    file = data['rows']

    time_list = []
    Day = 1578441600000  # 初始日期2020年1月8号
    # 读取运行代码时的时间,并保留年月日,时间变成8:00:00,然后扩大1000倍,因为json文件里的时间戳到毫秒,并变成字符串格式
    now_time = datetime.datetime.now()
    timeStr = datetime.datetime.strftime(now_time, '%Y-%m-%d 08:00:00')
    timeStamp = int(
        time.mktime(time.strptime(timeStr, '%Y-%m-%d %H:%M:%S')) * 1000)
    while Day <= timeStamp:
        time_list.append(transform_time(Day))
        Day = Day + 86400000

    data = COVID_Data(file, 1578441600000, timeStamp)

    #累计确诊
    timeline_1 = Timeline(init_opts=opts.InitOpts(width="calc(100vw)",
                                                  height="1000px",
                                                  theme=ThemeType.DARK,
                                                  page_title='全球疫情累计确诊'), )
    for y in time_list:
        g = get_day_chart(day=y,
                          data=data[0],
                          minNum=0,
                          maxNum=data[1],
                          total_num=data[2])