“新冠"疫情数据来源于腾讯疫情追踪,网址 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. 结果