“新冠"疫情數據來源於騰訊疫情追蹤,網址 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. 結果