import json
from pyecharts.charts import Map
from pyecharts import options as opts# 首先打开文件获取数据
f = open("/Desktop/python/Project/数据可视化/疫情.txt", "r", encoding="UTF-8")
data = f.read()# 字符串转化成json数据
data_json = json.loads(data)# 对数据进行处理,疫情确诊人数,首先需要获取地区,其次获取每个地区的确诊人数。
# data = data_json['areaTree']获取字典中'areaTree'的关键值,返回的是一个长度为一的列表。
# data = data_json['areaTree'][0]获取列表中的第一个元素,返回的是一个字典。
data = data_json['areaTree'][0]# 获取字典中的地区名称数据,返回的是一个列表,用一个空列表接收。(if name == "香港" or "澳门":这是错误的语法格式)
data = data["children"]
name_list = []
for x in data:name = x["name"]if name == "香港" or name == "澳门":name = name + "特别行政区"elif name == "新疆":name = name + "维吾尔自治区"elif name == "西藏" or name == "内蒙古":name = name + "自治区"elif name == "宁夏":name = name + "回族自治区"elif name == "广西":name = name + "壮族自治区"elif name == "北京" or name == "天津" or name == "上海" or name == "重庆":name = name + "市"else:name = name + "省"name_list.append(name)# 获取确诊人数并储存到列表中
conf_list = []
for t in data:conf_data = t["total"]["confirm"]conf_list.append(conf_data)# 准备地图对象
map = Map()# 准备数据,将名称和确诊人数构成一个元组列表。
# 查找连个列表的长度是否相等。
print(len(name_list))
print(len(conf_list))# 将元组添加到空列表中
data_list = []
i = 0
while i < 34:temp = (name_list[i], conf_list[i])data_list.append(temp)i += 1# 添加数据
map.add("中国疫情确诊人数图", data_list, "china")# 设置全局变量
map.set_global_opts(# 标题title_opts= opts.TitleOpts(title="全国疫情确诊图"),# 是否显示分段visualmap_opts=opts.VisualMapOpts(is_show=True, is_piecewise=True,pieces =[{"min": 1,"max":99,"label": "1-99人", "color": "#CCFFFF"},{"min": 100,"max":999,"label": "100-999人", "color": "#FFFF99"},{"min": 1000,"max":4999,"label": "500-999人", "color": "#FF9966"},{"min": 5000,"max":9999,"label": "1000-1499人", "color": "#CC3333"},{"min": 10000,"label":"10000人以上", "color": "#990033"}]))# 生成地图
map.render("map.html")
f.close()
效果图: