Python3 制作疫情的实时数据地图(附源码)

每天在地铁上刷着疫情的数据与新闻,希望能看到更多的好消息。

最近看到大家都在写疫情的实时数据地图,作为测试工程师,当然也不能落下。

下面的程序是通过Python生成实时生成数据分布图,全国和每个省份。

(数据来自微博,更新可能有所延迟。本文主要是技术分享)

全国数据图

湖北省

广东省

在命令行导入这些模块

pip install requests

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

源代码(代码来源于互联网,如有侵权请联系删除)

# -*- coding: utf-8 -*-
# @Time : 2020/3/18 10:03
# @Author : Liqiju
# @File : HTT.py
# @Software : PyCharm
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,创建省份地图
    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")
print("疫情图已生成!!!")

 把上面的代码复制到pycharm,保存运行。

运行结果

生成了全国、省份的实时地图网页

用浏览器打开就可以了。或者在pycharm里选择浏览器打开

再看看老家广西的

希望疫情赶紧过去,恢复正常的生活。

生活不易,测试也不易。 ----2020年3月18日18点28分。

发布了221 篇原创文章 · 获赞 207 · 访问量 17万+

猜你喜欢

转载自blog.csdn.net/qq_29720657/article/details/104950278