(源代码)⽤Python制作疫情的实时数据地图(PS:全国以及每个省)
【特别声明:转载知乎某⼤⽜,仅作略微修改,若侵犯权益请联系删除】
疫情的每⽇数据变化牵动着千万⼈的⼼,我多么希望早晨⼀醒来就传来疫情被战胜的喜讯。我每天早晨醒来的第⼀件事情,就是看看确诊⼈数的变化,相信很多⼩伙伴也和我⼀样。我是⼀名程序员,在家就制作了这样⼀个⼩程序,通过Python实时⽣成数据分布图,可以是全国也可以是每个省份。技术分享,我们⼀起战胜疫情。
(数据取⾃⽹站不⼀定⼗分精准,主要是技术分享,还望谅解)
全国数据图
湖北省
下⾯和⼤家⼀起来看看代码吧!
这⾥借助了pyecharts
1、先来将需要的模块导⼊进来
```python
#如果没有这些模块记得先导⼊
import requests
import json
import re
from pyecharts.charts import Map
from pyecharts import options
在命令⾏导⼊这些模块
导⼊模块
pip install requests
pip install json
pip install re
pip install pyecharts
除了上⾯的模块需要导⼊外还需要导⼊地图
依次是全球地图、中国省级地图、中国市级地图、中国区县级地图、中国区域地图根据需要地图导⼊
pip install echarts-countries-pypkg
pip install echarts-china-provinces-pypkg
pip install echarts-china-cities-pypkg
pip install echarts-china-counties-pypkg
pip install echarts-china-misc-pypkg
特别说明:若下载超时请⽤国内镜像下载,速度很快
用html设计一个疫情网页代码2.获取数据-处理数据;
#发起⽹络请求,获取数据
result = ('interface.sina/news/wap/fymap2020_data.d.json?1580097300739&&callback=sinajp_158009730087300537956784163418 1')
#使⽤正则表达式处理数据
json_str = re.search("\(+([^)]*)\)+", ).group(1)
html = f"{json_str}"
table = json.loads(f"{html}")
3.进⾏地图的⽣成,详解在后⾯;
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,创建省份地图
map_province = Map()
#设置地图上的标题和数据标记,添加省份和确诊⼈数
map_province.set_global_opts(title_opts=options.TitleOpts(title=province['name']+"实时疫情图-确诊⼈数:"+ province['value']),
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⽹页⽂件,取上对应省份的名字。
der(province['name']+"疫情地图.html")
#创建国家地图
map_country = Map()
#设置地图上的标题和数据标记,添加确诊⼈数
map_country.set_global_opts(title_opts=options.TitleOpts(title="中国实时疫情图-确诊⼈数:"+ 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⽹页⽂件。
der("中国疫情地图.html")
"""
#world地图,没有详细去完善了,有兴趣的可以试试。
data=[]
for country in table['data']['worldlist']:
data.append((country['name'], country['value']))
print(data)
map_country = Map()
map_country.set_global_opts(title_opts=options.TitleOpts(title="世界实时疫情图"), visualmap_opts=options.VisualMapOpts(max_=1000)) map_country.add("确诊", data, maptype="world")
der("world.html") # ⽣成html⽂件
"""
print("⽣成完成")
部分代码解释:
(1)
#将省份数据添加到列表中去
province_data.append((province[‘name’], province[‘value’]))
将数据中对应的值取出来添加到province_data中。
(2)
title_opts=options.TitleOpts(title=“A”)
A是⽣成地图中的红⾊框框部分。
(3)
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”}]))
is_piecewise=True,#设置是否为分段显⽰
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论