# -*- 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#發起網絡請求,獲取數據
result = requests.get('https://interface.sina.cn/news/wap/fymap2020_data.d.json?1580097300739&&callback=sinajp_1580097300873005379567841634181')#使用正則表達式處理數據
json_str = re.search("\(+([^)]*)\)+", result.text).group(1)
html = f"{json_str}"
table = json.loads(f"{html}")province_data =[]#循環獲取省份名稱和對應的確診數據for province in table['data']['list']:#將省份數據添加到列表中去province_data.append((province['name'], province['value']))city_data =[]#循環獲取城市名稱和對應的確診數據for city in province['city']:#這里要注意對應上地圖的名字需要使用mapName這個字段city_data.append((city['mapName'], city['conNum']))#創建國家地圖
map_country = Map()#設置地圖上的標題和數據標記,添加確診人數
map_country.set_global_opts(title_opts=options.TitleOpts(title="中國實時疫情圖-確診人數:%d"%(table['data']["gntotal"])), visualmap_opts=options.VisualMapOpts(is_piecewise=True,#設置是否為分段顯示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"}]))#將數據添加進去,生成中國地圖,所以maptype要對應china。
map_country.add("確診", province_data, maptype="china")#一切完成,那么生成一個html網頁文件。
map_country.render("country確診.html")print("中國實時疫情圖生成完成!!!")province_data =[]#循環獲取省份名稱和對應的確診數據for province in table['data']['list']:#將省份數據添加到列表中去province_data.append((province['name'], province['deathNum']))city_data =[]#循環獲取城市名稱和對應的確診數據for city in province['city']:#這里要注意對應上地圖的名字需要使用mapName這個字段city_data.append((city['mapName'], city['conNum']))#創建國家地圖
map_country = Map()#設置地圖上的標題和數據標記,添加確診人數
map_country.set_global_opts(title_opts=options.TitleOpts(title="中國實時疫情圖-死亡人數:%d"%(table['data']["deathtotal"])), visualmap_opts=options.VisualMapOpts(is_piecewise=True,#設置是否為分段顯示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"}]))#將數據添加進去,生成中國地圖,所以maptype要對應china。
map_country.add("死亡", province_data, maptype="china")#一切完成,那么生成一個html網頁文件。
map_country.render("country死亡.html")print("中國實時疫情圖生成完成!!!")province_data =[]#循環獲取省份名稱和對應的確診數據for province in table['data']['list']:#將省份數據添加到列表中去province_data.append((province['name'], province['cureNum']))city_data =[]#循環獲取城市名稱和對應的確診數據for city in province['city']:#這里要注意對應上地圖的名字需要使用mapName這個字段city_data.append((city['mapName'], city['conNum']))#創建國家地圖
map_country = Map()#設置地圖上的標題和數據標記,添加確診人數
map_country.set_global_opts(title_opts=options.TitleOpts(title="中國實時疫情圖-治愈人數:%d"%(table['data']["curetotal"])), visualmap_opts=options.VisualMapOpts(is_piecewise=True,#設置是否為分段顯示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"}]))#將數據添加進去,生成中國地圖,所以maptype要對應china。
map_country.add("治愈", province_data, maptype="china")#一切完成,那么生成一個html網頁文件。
map_country.render("country治愈.html")print("中國實時疫情圖生成完成!!!")province_data =[]#循環獲取省份名稱和對應的確診數據for province in table['data']['list']:#將省份數據添加到列表中去province_data.append((province['name'], province['susNum']))city_data =[]#循環獲取城市名稱和對應的確診數據for city in province['city']:#這里要注意對應上地圖的名字需要使用mapName這個字段city_data.append((city['mapName'], city['conNum']))#創建國家地圖
map_country = Map()#設置地圖上的標題和數據標記,添加確診人數
map_country.set_global_opts(title_opts=options.TitleOpts(title="中國實時疫情圖-疑似人數:%d"%(table['data']["sustotal"])), visualmap_opts=options.VisualMapOpts(is_piecewise=True,#設置是否為分段顯示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"}]))#將數據添加進去,生成中國地圖,所以maptype要對應china。
map_country.add("疑似", province_data, maptype="china")#一切完成,那么生成一個html網頁文件。
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#發起網絡請求,獲取數據
result = requests.get('https://interface.sina.cn/news/wap/fymap2020_data.d.json?1580097300739&&callback=sinajp_1580097300873005379567841634181')#使用正則表達式處理數據
json_str = re.search("\(+([^)]*)\)+", result.text).group(1)
html = f"{json_str}"
table = json.loads(f"{html}")province_data =[]#循環獲取省份名稱和對應的確診數據for province in table['data']['list']:#將省份數據添加到列表中去province_data.append((province['name'], province['cureNum']))city_data =[]#循環獲取城市名稱和對應的確診數據for city in province['city']:#這里要注意對應上地圖的名字需要使用mapName這個字段city_data.append((city['mapName'], city['conNum']))#使用Map,創建省份地圖 map_province = Map()#設置地圖上的標題和數據標記,添加省份和確診人數map_province.set_global_opts(title_opts=options.TitleOpts(title=province['name']+"實時疫情圖-治愈人數:"+province['cureNum']), visualmap_opts=options.VisualMapOpts(is_piecewise=True,#設置是否為分段顯示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"}]))#將數據添加進去,生成省份地圖,所以maptype要對應省份。map_province.add("治愈", city_data, maptype = province['name'])#一切完成,那么生成一個省份的html網頁文件,取上對應省份的名字。map_province.render(province['name']+".html")print("各個省份地圖生成完成")