需求:利用pyecharts模块实现疫情地图
效果展示:
一、导入json模块用于将json数据转换为Python数据
导入Map包用于绘制地图
导入options包用于地图选项设置
import json
from pyecharts.charts import Map
from pyecharts.options import *
二、数据预处理
1、从文件中读取数据
f = open("D:/疫情.txt", "r", encoding="UTF-8") #打开数据文件
data = f.read() #读取全部内容
f.close() #关闭文件
2、将读取到的JSON数据转换为Python数据
data_dict = json.loads(data) #JSON数据转Python数据
sichuan_province_data_list = data_dict["areaTree"][0]["children"][12]["children"] #筛选到四川省各市数据
3、组装各个市的名称与确诊人数为元组,并将各省份据封装到绘图所需数据列表中
data_list = [] #定义一个空列表,用于储存绘图数据
for city_data in sichuan_province_data_list:
if city_data["name"] == "阿坝":
city_name = city_data["name"] + "藏族羌族自治州"
elif city_data["name"] == "凉山":
city_name = city_data["name"] + "彝族自治州"
elif city_data["name"] == "甘孜":
city_name = city_data["name"] + "藏族自治州"
else:
city_name = city_data["name"] + "市" #原始数据中各市只有名称,没有加上“市”字眼,会影响后续绘图
city_confirm = city_data["total"]["confirm"]
data_list.append((city_name, city_confirm))
二、绘图
#绘图
map = Map() #得到图表对象
map.add("四川省确诊人数", data_list, "四川") #添加数据
#全局选项配置:设置不同颜色以表示确诊人数多少
map.set_global_opts(
title_opts=TitleOpts(title= "四川省确诊人数图", pos_left="center", pos_bottom="1%"),
visualmap_opts=VisualMapOpts(
is_show=True, #是否显示
is_piecewise=True, #是否分段
pieces=[ #分段规则
{"min": 1, "max": 9, "label": "1-9人", "color": "#CCFFFF"},
{"min": 10, "max": 49, "label": "10-49人", "color": "#FFFF99"},
{"min": 50, "max": 99, "label": "50-99人", "color": "#FF9966"},
{"min": 100, "max": 199, "label": "100-199人", "color": "#FF6666"},
{"min": 200, "max": 499, "label": "200-499", "color": "#CC3333"},
{"min": 500, "label": "500人", "color": "#990033"},
]
)
)
map.render("四川省疫情地图.html")
三、得到的图像文件,使用浏览器打开即可