# -*- coding: utf-8 -*-# -*- coding: utf-8 -*-"""
Created on Wed Feb 19 11:11:45 2020@author: lenovo
"""import requests
import json
import re
from pyecharts.charts import Map
from pyecharts import options#發(fā)起網(wǎng)絡(luò)請求,獲取數(shù)據(jù)
result = requests.get('https://interface.sina.cn/news/wap/fymap2020_data.d.json?1580097300739&&callback=sinajp_1580097300873005379567841634181')#使用正則表達式處理數(shù)據(jù)
json_str = re.search("\(+([^)]*)\)+", result.text).group(1)
html = f"{json_str}"
table = json.loads(f"{html}")province_data =[]#循環(huán)獲取省份名稱和對應(yīng)的確診數(shù)據(jù)for province in table['data']['list']:#將省份數(shù)據(jù)添加到列表中去province_data.append((province['name'], province['value']))city_data =[]#循環(huán)獲取城市名稱和對應(yīng)的確診數(shù)據(jù)for city in province['city']:#這里要注意對應(yīng)上地圖的名字需要使用mapName這個字段city_data.append((city['mapName'], city['conNum']))#創(chuàng)建國家地圖
map_country = Map()#設(shè)置地圖上的標(biāo)題和數(shù)據(jù)標(biāo)記,添加確診人數(shù)
map_country.set_global_opts(title_opts=options.TitleOpts(title="中國實時疫情圖-確診人數(shù):%d"%(table['data']["gntotal"])), visualmap_opts=options.VisualMapOpts(is_piecewise=True,#設(shè)置是否為分段顯示pieces=[{"min":1000,"label":'>1000人',"color":"#6F171F"},# 不指定 max,表示 max 為無限大(Infinity)。{"min":500,"max":1000,"label":'500-1000人',"color":"#C92C34"},{"min":100,"max":499,"label":'100-499人',"color":"#E35B52"},{"min":10,"max":99,"label":'10-99人',"color":"#F39E86"},{"min":1,"max":9,"label":'1-9人',"color":"#FDEBD0"}]))#將數(shù)據(jù)添加進去,生成中國地圖,所以maptype要對應(yīng)china。
map_country.add("確診", province_data, maptype="china")#一切完成,那么生成一個html網(wǎng)頁文件。
map_country.render("country確診.html")print("中國實時疫情圖生成完成!!!")province_data =[]#循環(huán)獲取省份名稱和對應(yīng)的確診數(shù)據(jù)for province in table['data']['list']:#將省份數(shù)據(jù)添加到列表中去province_data.append((province['name'], province['deathNum']))city_data =[]#循環(huán)獲取城市名稱和對應(yīng)的確診數(shù)據(jù)for city in province['city']:#這里要注意對應(yīng)上地圖的名字需要使用mapName這個字段city_data.append((city['mapName'], city['conNum']))#創(chuàng)建國家地圖
map_country = Map()#設(shè)置地圖上的標(biāo)題和數(shù)據(jù)標(biāo)記,添加確診人數(shù)
map_country.set_global_opts(title_opts=options.TitleOpts(title="中國實時疫情圖-死亡人數(shù):%d"%(table['data']["deathtotal"])), visualmap_opts=options.VisualMapOpts(is_piecewise=True,#設(shè)置是否為分段顯示pieces=[{"min":1000,"label":'>1000人',"color":"#6F171F"},# 不指定 max,表示 max 為無限大(Infinity)。{"min":500,"max":1000,"label":'500-1000人',"color":"#C92C34"},{"min":100,"max":499,"label":'100-499人',"color":"#E35B52"},{"min":10,"max":99,"label":'10-99人',"color":"#F39E86"},{"min":1,"max":9,"label":'1-9人',"color":"#FDEBD0"}]))#將數(shù)據(jù)添加進去,生成中國地圖,所以maptype要對應(yīng)china。
map_country.add("死亡", province_data, maptype="china")#一切完成,那么生成一個html網(wǎng)頁文件。
map_country.render("country死亡.html")print("中國實時疫情圖生成完成!!!")province_data =[]#循環(huán)獲取省份名稱和對應(yīng)的確診數(shù)據(jù)for province in table['data']['list']:#將省份數(shù)據(jù)添加到列表中去province_data.append((province['name'], province['cureNum']))city_data =[]#循環(huán)獲取城市名稱和對應(yīng)的確診數(shù)據(jù)for city in province['city']:#這里要注意對應(yīng)上地圖的名字需要使用mapName這個字段city_data.append((city['mapName'], city['conNum']))#創(chuàng)建國家地圖
map_country = Map()#設(shè)置地圖上的標(biāo)題和數(shù)據(jù)標(biāo)記,添加確診人數(shù)
map_country.set_global_opts(title_opts=options.TitleOpts(title="中國實時疫情圖-治愈人數(shù):%d"%(table['data']["curetotal"])), visualmap_opts=options.VisualMapOpts(is_piecewise=True,#設(shè)置是否為分段顯示pieces=[{"min":1000,"label":'>1000人',"color":"#6F171F"},# 不指定 max,表示 max 為無限大(Infinity)。{"min":500,"max":1000,"label":'500-1000人',"color":"#C92C34"},{"min":100,"max":499,"label":'100-499人',"color":"#E35B52"},{"min":10,"max":99,"label":'10-99人',"color":"#F39E86"},{"min":1,"max":9,"label":'1-9人',"color":"#FDEBD0"}]))#將數(shù)據(jù)添加進去,生成中國地圖,所以maptype要對應(yīng)china。
map_country.add("治愈", province_data, maptype="china")#一切完成,那么生成一個html網(wǎng)頁文件。
map_country.render("country治愈.html")print("中國實時疫情圖生成完成!!!")province_data =[]#循環(huán)獲取省份名稱和對應(yīng)的確診數(shù)據(jù)for province in table['data']['list']:#將省份數(shù)據(jù)添加到列表中去province_data.append((province['name'], province['susNum']))city_data =[]#循環(huán)獲取城市名稱和對應(yīng)的確診數(shù)據(jù)for city in province['city']:#這里要注意對應(yīng)上地圖的名字需要使用mapName這個字段city_data.append((city['mapName'], city['conNum']))#創(chuàng)建國家地圖
map_country = Map()#設(shè)置地圖上的標(biāo)題和數(shù)據(jù)標(biāo)記,添加確診人數(shù)
map_country.set_global_opts(title_opts=options.TitleOpts(title="中國實時疫情圖-疑似人數(shù):%d"%(table['data']["sustotal"])), visualmap_opts=options.VisualMapOpts(is_piecewise=True,#設(shè)置是否為分段顯示pieces=[{"min":1000,"label":'>1000人',"color":"#6F171F"},# 不指定 max,表示 max 為無限大(Infinity)。{"min":500,"max":1000,"label":'500-1000人',"color":"#C92C34"},{"min":100,"max":499,"label":'100-499人',"color":"#E35B52"},{"min":10,"max":99,"label":'10-99人',"color":"#F39E86"},{"min":1,"max":9,"label":'1-9人',"color":"#FDEBD0"}]))#將數(shù)據(jù)添加進去,生成中國地圖,所以maptype要對應(yīng)china。
map_country.add("疑似", province_data, maptype="china")#一切完成,那么生成一個html網(wǎng)頁文件。
map_country.render("country疑似.html")print("中國實時疫情圖生成完成!!!")
# -*- coding: utf-8 -*-"""
Created on Thu Feb 20 16:45:13 2020@author: lenovo
"""import requests
import json
import re
from pyecharts.charts import Map
from pyecharts import options#發(fā)起網(wǎng)絡(luò)請求,獲取數(shù)據(jù)
result = requests.get('https://interface.sina.cn/news/wap/fymap2020_data.d.json?1580097300739&&callback=sinajp_1580097300873005379567841634181')#使用正則表達式處理數(shù)據(jù)
json_str = re.search("\(+([^)]*)\)+", result.text).group(1)
html = f"{json_str}"
table = json.loads(f"{html}")province_data =[]#循環(huán)獲取省份名稱和對應(yīng)的確診數(shù)據(jù)for province in table['data']['list']:#將省份數(shù)據(jù)添加到列表中去province_data.append((province['name'], province['cureNum']))city_data =[]#循環(huán)獲取城市名稱和對應(yīng)的確診數(shù)據(jù)for city in province['city']:#這里要注意對應(yīng)上地圖的名字需要使用mapName這個字段city_data.append((city['mapName'], city['conNum']))#使用Map,創(chuàng)建省份地圖 map_province = Map()#設(shè)置地圖上的標(biāo)題和數(shù)據(jù)標(biāo)記,添加省份和確診人數(shù)map_province.set_global_opts(title_opts=options.TitleOpts(title=province['name']+"實時疫情圖-治愈人數(shù):"+province['cureNum']), visualmap_opts=options.VisualMapOpts(is_piecewise=True,#設(shè)置是否為分段顯示pieces=[{"min":1000,"label":'>1000人',"color":"#6F171F"},{"min":500,"max":1000,"label":'500-1000人',"color":"#C92C34"},{"min":100,"max":499,"label":'100-499人',"color":"#E35B52"},{"min":10,"max":99,"label":'10-99人',"color":"#F39E86"},{"min":1,"max":9,"label":'1-9人',"color":"#FDEBD0"}]))#將數(shù)據(jù)添加進去,生成省份地圖,所以maptype要對應(yīng)省份。map_province.add("治愈", city_data, maptype = province['name'])#一切完成,那么生成一個省份的html網(wǎng)頁文件,取上對應(yīng)省份的名字。map_province.render(province['name']+".html")print("各個省份地圖生成完成")