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'][0]["children"][3]["children"]
# 定义地区名称列表和地区确诊人数列表。
name_lsit = []
conf_list = []
for x in data:
name_lsit.append(x["name"]+"市")
conf_list.append(x["total"]["confirm"])
print(name_lsit)
print(conf_list)
# 准备地图对象
map = Map()
# 准备数据,将名称和确诊人数构成一个元组列表。
# 查找连个列表的长度是否相等。
print(len(name_lsit))
print(len(conf_list))
# 使用zip函数,将元组添加到空列表中。
data_list = list(zip(name_lsit,conf_list))
# 添加数据
map.add("河南疫情确诊人数图",data_list, "河南")
# 设置全局变量
map.set_global_opts(
# 标题
title_opts= opts.TitleOpts(title="河南疫情确诊图"),
# 是否显示分段
visualmap_opts=opts.VisualMapOpts(
is_show=True, is_piecewise=True,
pieces =
[
{"min": 1,"max":49,"label": "1-49人", "color": "#CCFFFF"},
{"min": 50,"max":99,"label": "50-99人", "color": "#FFFF99"},
{"min": 100,"max":199,"label": "100-199人", "color": "#FF9966"},
{"min": 200,"max":299,"label": "200-299人", "color": "#CC3333"},
{"min": 300,"label":"300人以上", "color": "#990033"}
]
)
)
# 生成地图
map.render("河南疫情确诊人数.html")
f.close()
效果演示: