疫情数据的可视化:中国疫情地图的制作

昨日给大家分享了百度疫情数据的爬虫程序,今天我们聊聊疫情数据的可视化问题。相信大家在百度、腾讯、网易、今日头条等平台的疫情实时追踪版块都会看到一张中国疫情图,点击相应的省份就可以看到病例数。那么,这种疫情的动态地图是怎么制作的呢?我们其实可以基于Python的pyecharts库去实现,使用之前记得要安装(pip install pyecharts)。

我们首先从网易新闻疫情数据版块把今天各省的累计确诊病例数爬取下来(https://wp.m.163.com/163/page/news/virus_report/index.html?_nw_=1&_anw_=1),浏览器抓包之后就会发现数据格式也是json数据(对于动态加载页面,数据格式一般都是json)。我们将省份名称和确证病例数分别存放在province_list和total_list两个列表中,然后就可以开始疫情地图的制作了!

import requests
import json
import jsonpath
import time
from pyecharts.charts import Map
from pyecharts import options

网易疫情数据https://wp.m.163.com/163/page/news/virus_report/index.html?_nw_=1&_anw_=1
url = https://c.m.163.com/ug/api/wuhan/app/data/list-total?t=318114165398

headers = {
User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36 Edg/83.0.478.37,
}

response = requests.get(url,headers=headers).text

datas = json.loads(response)json字符串转为字典

china_datas = datas[data][areaTree][2]
province_list = []
total_list = []
for data in china_datas[children]:
province = data[name]
province_list.append(province)
total = data[total][confirm]
total_list.append(total)

Echarts是百度开源的数据可视化库,pyecharts就是Python和Echarts的有机结合。pyecharts库的使用有一个中文官方文档(网址https://pyecharts.org//zh-cn/intro),官网上介绍了pyecharts的使用方法、参数设定,还提供了一些图表作为示范案例,以供大家去学习和参考!

我们要制作的疫情动态地图就是一个分段型的中国地图,所以,我们就可以模仿分段型地图的代码去进行制作,width和height是我们要制作的地图的宽度和高度,list(z) for z in zip(province_list,total_list)是将省份名称和累计确诊列表传入地图中,maptype="china"表示是中国地图(除此之外,世界地图、省份地图、城市地图都是可以调用的),pieces是我们分的段,对于每一段我们都设置了不同的颜色加以区分。

可视化 pyecharts
map = Map(options.InitOpts(width=1500px,height=700px)).add("中国疫情动态地图",
[list(z) for z in zip(province_list,total_list)],
maptype="china",is_map_symbol_show=False)

不显示省份名称
map.set_series_opts(label_opts=options.LabelOpts(is_show=False))

设置全局配置项 图例
map.set_global_opts(title_opts=options.TitleOpts(title="中国疫情动态地图"),
visualmap_opts=options.VisualMapOpts(split_number=5,is_piecewise=True,
pieces=[{"min":0,"max":50,"label":"0-50人","color":"ffefd7"},
{"min":51,"max":200,"label":"51-200人","color":"fe8664"},
{"min":201,"max":1000,"label":"201-1000人","color":"e64b47"},
{"min":1001,"max":10000,"label":"1001-10000人","color":"c91014"},
{"min":10001,"label":"10000人以上","color":"9c0a0d"}]))
map.render(rD:\爬虫下载\中国疫情动态地图.html)

当然,更多的参数还需要大家自己去学习和探索!下图就是我制作的中国疫情动态地图,鼠标点击到每个省份就可以看到这个省份的累计确诊病例数。因为制作出来的动态地图是网页html格式的,所以分享起来比较麻烦!需要这份疫情动态地图的朋友,请在公众号后台回复地图。(备注:大家拿到的是一个txt文本文件,请把后缀名.txt改为.html,然后打开就可以了)

为您推荐

返回顶部