利用Python中pyecharts组件绘制2020“新冠”疫情地图
“新冠"疫情数据来源于腾讯疫情追踪,网址 https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5 (截至本文编写时网址仍有效)。
1. 首先安装pyecharts模块和对应的中国地图组件:(可以使用国内镜像)
2. 引入相关包
from pyecharts.charts import Map from pyecharts import options as opts import requests import json
3. 获取数据
url = 'https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5' data = json.loads(requests.get(url=url).json()['data']) china = data['areaTree'][0]['children'] # 省和直辖市 province_distribution = {} i = 0 while i <= 33: key = china[i]['name'] province_distribution[key] = province_distribution.get(key,0) + china[i]['total']['confirm'] i += 1
4. 绘制地图
map = Map() map.set_global_opts( title_opts=opts.TitleOpts(title="实时疫情地图 %s\n\n累计确诊 %d\n现有疑似 %d\n累计治愈 %d\n累计死亡 %d"\ %(data['lastUpdateTime'],data['chinaTotal']['confirm'],\ data['chinaTotal']['suspect'],data['chinaTotal']['heal'],data['chinaTotal']['dead'])), visualmap_opts=opts.VisualMapOpts(max_=3600, is_piecewise=True, pieces=[ {"max": 1999999, "min": 10000, "label": "10000人及以上", "color": "#8A0808"}, {"max": 9999, "min": 1000, "label": "1000-9999人", "color": "#B40404"}, {"max": 999, "min": 500, "label": "500-999人", "color": "#DF0101"}, {"max": 499, "min": 100, "label": "100-499人", "color": "#F78181"}, {"max": 99, "min": 10, "label": "10-99人", "color": "#F5A9A9"}, {"max": 9, "min": 0, "label": "1-9人", "color": "#FFFFCC"}, ], ) #最大数据范围,分段 ) map.add("确诊", data_pair=province_distribution.items(), maptype="china", is_roam=True) map.render('实时疫情地图.html')
5. 结果