全国服务热线:400-6136-679

位置:上海童程童美编程培训学校 > 学校动态 > 用Python制作疫情的实时数据地图

用Python制作疫情的实时数据地图

来源:上海童程童美编程培训学校时间:2020/9/17 9:58:07

  疫情的每日数据变化牵动着千万人的心,我多么希望早晨一醒来就传来疫情被的喜讯。

  我每天早晨醒来的件事情,就是看看确诊人数的变化,相信很多小伙伴也和我一样。我是一名程序员,在家就制作了这样一个小程序,通过Python实时生成数据分布图,可以是也可以是每个省份。技术分享,我们一起疫情。

  (数据取自网站不一定十分,主要是技术分享,还望谅解)

  下面和大家一起来看看代码吧!

  这里借助了pyecharts

  1、先来将需要的模块导入进来

  #如果没有这些模块记得先导入

  import requests

  import json

  import re

  from pyecharts.charts import Map

  from pyecharts import options

  在命令行导入这些模块

  导入模块

  pip3 install requests

  pip3 install json

  pip3 install re

  pip3 install pyecharts

  除了上面的模块需要导入外

  依次是地图、中国省级地图、中国市级地图、中国区县级地图、中国区域地图

  根据需要地图导入

  pip3 install echarts-countries-pypkg

  pip3 install echarts-china-provinces-pypkg

  pip3 install echarts-china-cities-pypkg

  pip3 install echarts-china-counties-pypkg

  pip3 install echarts-china-misc-pypkg

上海童程童美少儿编程学校

  2.获取数据-处理数据;

  #发起网络请求,获取数据

  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}")

  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网页文件,取上对应省份的名字。

  map_province.render(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网页文件。

  map_country.render("country.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")

  map_country.render("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,#设置是否为分段显示

  然后通过 pieces来设置。

  (4)

  #将数据添加进去,生成中国地图,所以maptype要对应china。

  map_country.add("确诊", province_data, maptype="china")

  将描述信息和对应数据添加到地图中去,同时设置地图type。

  (5)

  #一切完成,那么生成一个html网页文件。

  map_country.render("country.html")

  (6)就这样生成了世界、、省份的实时地图网页。

领取试听课
每天限量名额,先到先得

尊重原创文章,转载请注明出处与链接:http://www.peixun360.com/2475/news/255849/违者必究! 以上就是上海童程童美编程培训学校 小编为您整理 用Python制作疫情的实时数据地图的全部内容。

温馨提示:提交留言后老师会第一时间与您联系!热线电话:400-6136-679