Python 制作全国疫情地图

追踪者
• 阅读 4844

制作全国疫情地图


开篇说明: 本篇内容仅做个人学习使用。

疫情期间,希望大家注意个人防护。中国加油!

获取数据


使用工具

爬取工具: requests

浏览器: Google Chrome

requests 是 Python 第三方库,可用作爬取数据。详细的内容可参考官方文档(本篇幅先不展开介绍):

https://requests.readthedocs.io/en/master/

使用之前,需要先安装 requests:

pip install requests

如果是直接安装 Anaconda 的话,这一步可以省略。

数据源

这里使用的是腾讯的数据源,腾讯提供的疫情数据直接输出在 console 上,非常的友好。

具体地址:https://news.qq.com/zt2020/page/feiyan.htm

打开上面的链接,按 F12 或者右键点击选择“检查”,在调出的开发者工具上方选项卡中选择 Console。

Python 制作全国疫情地图

这里可以看到全部的数据都在这里,其中 lastUpdateTime 是最后更新时间,chinaTotal 是现在疫情总体的情况(包括确诊数,疑似数,死亡数,治愈数),areaTree 里面包含详细的信息。

Python 制作全国疫情地图

这里,只要我们中国的详细数据,这些数据就包含在 areaTree 索引为 0 下面的 children 中。

通过上面的观察,我们已经知道需要获取的数据结构是怎样的。现在跳转到输出这些数据的 intro_vp.js 脚本中,查看数据是如何得到的。

Python 制作全国疫情地图

图中标记的部分就是获取数据的接口,现在我们使用 requests 库来获取接口返回的数据。

获取数据

直接看代码:

import requests
import json

# 数据接口
url = 'https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5'
# 读取数据转换为 JSON 格式
data = json.loads(requests.get(url).json()['data'])
# 更新时间
update_time = data['lastUpdateTime']
# 全国数据
china_total = data['chinaTotal']
# 全国各地具体数据
China = data['areaTree'][0]['children']

# 将数据生成为副标题
ncp_info = '确诊:{} 疑似:{} 死亡:{} 治愈:{} 更新日期:{}'.format(
    china_total['confirm'],
    china_total['suspect'],
    china_total['dead'],
    china_total['heal'],
    update_time
    )

绘制地图


地图绘制部分,Basemap 虽然能够绘制地图,但是使用比较麻烦。这里推荐使用 pyecharts 库。

pyecharts 是一个用于生产 Echarts 图表的类库,Echarts 是百度开源的一个数据可视化 JS 库。

使用之前先安装库:

pip install pyecharts

这里安装的时候可能会出现超时。遇到这种情况的时候,可以考虑使用清华镜像:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyecharts

安装地图文件

全球国家地图: echarts-countries-pypkg

中国省级地图: echarts-china-provinces-pypkg

中国市级地图: echarts-china-cities-pypkg

pip install echarts-countries-pypkg
pip install echarts-china-provinces-pypkg
pip install echarts-china-cities-pypkg

关于 pyecharts 的内容也可以参考下面的文档:

https://pyecharts.org/#/zh-cn/intro

前面已经获取到数据,现在使用 pyecharts 绘制地图。

首先导入所需的库

from pyecharts.charts import Map, Geo
from pyecharts import options as opts
from pyecharts.globals import GeoType

配置 Geo,并保存:

c = (
    Geo()
    .add_schema(
        maptype='china',
        # 设置地图区域颜色
        itemstyle_opts=opts.ItemStyleOpts(color="#323c48", border_color="#111"),
    )
    .add(
        'geo',
        # 序列数据,添加省会名称以及确诊数量
        [list([China[i]['name'], China[i]['total']['confirm']]) for i in range(len(China))],
        # 设置涟漪效果
        type_=GeoType.EFFECT_SCATTER,
    )
    .set_series_opts(
        # 不显示 Label
        label_opts=opts.LabelOpts(is_show=False),
    )
    .set_global_opts(
        # 设置标题,副标题,放置中间
        title_opts=opts.TitleOpts(title="全国疫情地图", subtitle=ncp_info, pos_left='center'),
        # 设置渐变,最大值设为 平均值
        visualmap_opts=opts.VisualMapOpts(min_=0, max_=china_total['confirm']/len(data)),
        # 不显示图例
        legend_opts=opts.LegendOpts(is_show=False)
    )
)

# 保存地图
c.render()

效果展示:

Python 制作全国疫情地图


以上就是本篇的主要内容

欢迎关注微信公众号《书所集录》
点赞
收藏
评论区
推荐文章
代码哈士奇 代码哈士奇
4年前
vue实现世界疫情地图(点击进入子地图)
点击进入子地图目前只实现了中国模块数据来源,腾讯实时疫情(https://news.qq.com/zt2020/page/feiyan.htm/global),中国疫情网(https://www.ncovchina.com/data.html)原本只想做中国模块,后来想了想,做个世界的吧使用axios和echarts,elementui的
Jacquelyn38 Jacquelyn38
4年前
关于2020年个人项目【臻美_疫情实时大数据报告】(项目开源)
dwdhhhwadadwa本项目开源,供大家学习交流,数据来自官方通报。一、项目网址:https://www.maomin.club/fy/(复制打开网址)二、项目图例:1、国内疫情(省)2、国内疫情(市)3、国外疫情4、热点消息、辟谣消息5、防疫知识源码奉上github地址:https://github.com/maomincoding/dat
Aidan075 Aidan075
4年前
用数据可视化的形式,展示新冠疫情全国殉职医护人员名单。
↑关注星标  有趣的不像个技术号每晚九点,我们准时相约  大家好,我是朱小五今天的一切都是灰色的。我在腾讯视频上,看到了一个数可视x腾讯新闻制作的视频。它用数据可视化的形式,展示新冠疫情全国殉职医护人员名单。每一个英雄名字都值得铭记!据不完全统计,疫情期间至少有39名医护人员殉职,平均年龄49岁,最大的73岁,最
Wesley13 Wesley13
3年前
JAVA代码载入史册,但还有80%程序员没有彻底理解IOC...
前几天,在全国抗击新冠肺炎疫情表彰大会上,阿里的三行健康码代码被载入史册。健康码在疫情防控期间,是中国数字化抗疫见证。这三行代码分别是:支付宝团队研发的健康码系统第一行代码;阿里云研发的全国健康码引擎第一行代码;阿里巴巴达摩院研发的新冠肺炎CT影像AI辅助诊断产品第一行代码。!(https://oscimg.oschina.net/o
Stella981 Stella981
3年前
Python模块
目录pyecharts模块简介安装pyecharts测试pyecharts模块pyecharts实战:绘制新冠肺炎疫情地图需求分析请求数据提取数据处理数据制作可视化地图设置可视
Stella981 Stella981
3年前
Python笔记:中国疫情随时间变化趋势
      涉及到时间序列的观察值,我们可以绘制折线图来做相关数据分析。例如:frompyecharts.chartsimportfrompyechartsimportoptionsasoptsx_data'206','213','220','227','305','
Stella981 Stella981
3年前
DataGear 轻松制作支持图表联动的全国地图、省级地图数据可视化看板
DataGear(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fwww.datagear.tech)看板的图表联动功能,使您可以轻松制作支持图表联动的全国地图、省级地图数据可视化看板。首先,新建两个数据集。第一个是各省指标数据集,将用于绘制全国指标图表,它的SQL语句如下
Wesley13 Wesley13
3年前
AAAI 2020「自然语言处理(NLP)」【哈尔滨工业大学】多任务自监督学习的文本顺滑
喜欢我们,点击上方AINLPer,关注一下,极品干货即刻送达!转载:哈工大SCIR各位小伙伴,最近全国各地陆续发现新型冠状病毒感染的肺炎疫情,又赶上春节,大家出门请注意戴口罩,做好防护~~引言现有的不流利检测方法大多严重依赖人工标注的数据,而在实践中获取这些数据的成本很高。为了解决训练数据的瓶颈,本文研究了
Stella981 Stella981
3年前
Serverless 在游戏运营行业进行数据采集分析的最佳实践
众所周知,游戏行业在当今的互联网行业中算是一棵常青树。在疫情之前的2019年,中国游戏市场营收规模约2884.8亿元,同比增长17.1%。2020年因为疫情,游戏行业更是突飞猛进。玩游戏本就是中国网民最普遍的娱乐方式之一,疫情期间更甚。据不完全统计,截至2019年,中国移动游戏用户规模约6.6亿人,占中国总网民规模8.47亿的77.92%,可见游戏作为一种低
每秒百万条信息查询 天翼云助力江苏核酸检测信息查询
目前,由南京禄口国际机场外溢的新冠肺炎疫情感染链仍在延长,牵动着全国人民的心。时有所需,必有所为。面对南京疫情,中国电信立即做出反应,争分夺秒彰显央企使命,全面响应江苏疫情防控战。面对此次来势汹汹的疫情,南京市目前已完成三轮核酸检测,共计产生2700万人次的检测结果。接下来,南京市将继续迎来第四轮核酸检测工作,扬州、淮安、宿迁等地将迎来第二次全民筛查。为保障
酒店详情页的房价数据,怎么获取?
携程酒店详情页,指定入住日期的房价数据,怎么获取?疫情放开后很多行业开始了复苏,之前公司因为疫情暂停的项目现在又开始慢慢的启动了。最近小姐分到了一个爬取携程上一些酒店的数据需求,需要获取到酒店详情页,指定入住日期的房价数。但是据携程有反爬虫措施的,详情页的