使用python语言、pyecharts实现地图可视化
pyecharts官网:https://pyecharts.org/#/
画廊参考:https://gallery.pyecharts.org/#/
实现步骤
一、导入
导入可能使用的包
import json
from pyecharts.charts import Map # 使用地图
from pyecharts.options import TitleOpts # 地图标题
from pyecharts.options import VisualMapOpts # 地图分段
二、读取文件
将读取的文件内容以字符串形式保存到data里面
f = open("D:/疫情.txt","r",encoding="UTF-8")
data = f.read()
f.close() # 使用完文件,关闭
三、获取数据
将data保存的字符串转换为python的字典类型。
然后获取字典下的数据。
data_dict = json.loads(data) #json转换为python
province_data_list = data_dict["areaTree"][0]["children"]
四、组装数据
使用列表保存多个元组元素。
data_list = []
for province_data in province_data_list:
province_name = province_data["name"] # 省份名称
province_confirm = province_data["total"]["confirm"] # 确诊人数
data_list.append((province_name,province_confirm)) # 将省份对应确诊人数
五、创建地图
创建地图对象
map = Map()
添加数据
map.add("各省确诊人数",data_list,"china")
设置全局配置,定制分段视觉映射
map.set_global_opts(
title_opts=TitleOpts(title="全国疫情地图"),# 标题
visualmap_opts=VisualMapOpts( # 视觉映射配置,地图各省份分段显示颜色
is_show=True,
is_piecewise=True, # 是否分段
pieces=[
{"min":1,"max":99,"lable":"1-99人","color":"#CCFFFF"},
{"min":100,"max":999,"lable":"100-999人","color":"#FFFF99"},
{"min":1000,"max":4999,"lable":"1000-4999人","color":"#FF9966"},
{"min":5000,"max":9999,"lable":"5000-9999人","color":"#FF6666"},
{"min":10000,"max":99999,"lable":"10000-99999人","color":"#CC3333"},
{"min":100000,"lable":"100000+人","color":"#990033"}
]
)
)
绘图
map.render("全国疫情地图.html")
运行,打开.html文件即可。
省份可视化实现
代码:
# 导入
import json
from pyecharts.charts import Map
from pyecharts.options import *
# 读取文件
f = open("D:/疫情.txt","r",encoding="UTF-8")
data = f.read()
# 关闭文件
f.close()
# json数据转换为python字典
data_dict = json.loads(data)
# 获取山东省数据
cities_data = data_dict["areaTree"][0]["children"][11]["children"]
# 准备数据为元组存入list
data_list=[]
for city_data in cities_data:
city_name = city_data["name"]+"市"
city_confirm = city_data["total"]["confirm"]
data_list.append((city_name,city_confirm))
print(data_list)
# 构建地图
map = Map()
map.add("山东省疫情分布",data_list,"山东")
# 设置全局选项
map.set_global_opts(
title_opts=TitleOpts(title="山东省疫情地图"),
visualmap_opts=VisualMapOpts(
is_show=True,
is_piecewise=True,
pieces=[
{"min":1,"max":99,"lable":"1-99人","color":"#CCFFFF"},
{"min":100,"max":999,"lable":"100-999人","color":"#FFFF99"},
{"min":1000,"max":4999,"lable":"1000-4999人","color":"#FF9966"},
{"min":5000,"max":9999,"lable":"5000-9999人","color":"#FF6666"},
{"min":10000,"max":99999,"lable":"10000-99999人","color":"#CC3333"},
{"min":100000,"lable":"100000+人","color":"#990033"}
]
)
)
# 绘图
map.render("山东省疫情地图.html")