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
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
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
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])