import json
from pyecharts.charts import Timeline, Map
from pyecharts import options as opts
with open('./timeseries.json','r') as f:
countries = json.load(f)
def render_map(date_list, cy_name_list, ncov_data):
tl = Timeline() # 创建时间线轮播多图,可以让图形按照输入的时间动起来
# is_auto_play:自动播放
# play_interval:播放时间间隔,单位:毫秒
# is_loop_play:是否循环播放
tl.add_schema(is_auto_play=True, play_interval=50, is_loop_play=False)
for i,date_str in enumerate(date_list): # 遍历时间列表
map0 = (
Map() # 创建地图图表
# 将国家名 cy_name_list 以及各国当天确诊病例 ncov_data[date_str] 加入地图中
.add("全球疫情趋势", [list(z) for z in zip(cy_name_list, ncov_data[date_str])],
"world", is_map_symbol_show=False)
.set_series_opts(label_opts=opts.LabelOpts(is_show=False)) # 不显示国家名
.set_global_opts(
title_opts=opts.TitleOpts(title="%s日" % date_str), # 图表标题
visualmap_opts=opts.VisualMapOpts(max_=20000), # 当确诊病例大于80 ,地图颜色是红色
)
)
tl.add(map0, "%s" % date_str) # 将当天的地图状态加入时间线中
tl.render('nowconfirm.html') # 生成最终轮播多图,会在当前目录创建 render.html 文件
date_list=[]
for i in countries['Afghanistan']:
date_list.append(i['date'])
cy_name_list=[]
for i in countries:
cy_name_list.append(i)
ncov_data={}
for item,i in enumerate(date_list):
ncov_data[i]=[]
for j in cy_name_list:
ncov_data[i].append(countries[j][item]['confirmed']-countries[j][item]['deaths']-countries[j][item]['recovered'])
render_map(date_list,cy_name_list,ncov_data)
效果