带大家用40行python代码实现一个疫情地图
最近两个月,因为新冠病毒无情的肆虐,相信会给每个中国人的记忆中画上重重的一笔。到今天为止,疫情形势依然十分严峻,虽然除湖北外的其他省份已经连续十一天确诊人数下降,但是接下来还有将近至少1.6亿的人口迁徙,这无疑还存在一定的风险。
相信很多人和我一样,早上起床的第一件事情都是查看疫情数据,一般的数据都配有中国确诊人数的地图,之前看到csdn推过一篇文章,有同学用python实现疫情地图,我觉得挺有意思的,于是就尝试自己动手也写一个,主要用到如下的库:
- 网络请求:requests
- 绘制图表的库:pyecharts
获取疫情数据
在腾讯新闻和支付宝中,都能看到疫情数据,但是获取支付宝的数据难度相对大一些,所以决定从腾讯新闻的数据入手,首先在chrome中打开链接:https://news.qq.com//zt2020/page/feiyan.htm,然后通过chrome开发者工具(F12)过滤对应的XHR接口(XHR格式的接口,是ajax异步请求网络数据的接口,一般定义的接口可通过XHR过滤),如下图:

通过查看图中所有的接口,是获取各个省份医院数量、根据省份名称查询每日新增确诊人数的数据,并没有我们需要的全国各个省份确诊人数的数据。我们再切换到chrome开发者工具的console来看看开发是否有打印对应的数据,bingo!果然找到了比较有用的信息:

我们看上图两个关键信息,一个是红框内的url,另一个是打印的全部数据,我们从其中找到了我们需要的全国各个省份的确诊总数量。数据源确定了,接下来就是使用requests库请求数据,并且将上图areaTree下面的children中的数据取出来:

上面的代码需要注意一点,就是requests.get(data_url).json()["data"]返回的是字符串,需要将其转成json,才能从中将值取出来。现在数据有了,万事俱备,只欠东风!接下来我们开始绘制中国地图。
绘制地图
python中进行图表绘制的库主要有两个:matplotlib 和 pyecharts, 相比较而言:
- matplotlib中提供了BaseMap可以用于地图的绘制,但是个人觉得其绘制的地图不太美观,另外一个重要的原因,其安装有点麻烦,可能存在兼容性问题。
- pyecharts是基于百度开源的js库echarts而来,其最大的特点是:简单,安装简单、使用也简单。
所以最终决定用pyecharts来绘制地图,其核心代码如下:

在pyecharts的官方文档(https://pyecharts.org/#/zh-cn/)中详细的列出了绘制各种图表的方法及参数的含义,最重要的,文档中提供了各种可供参考的demo,方便我们更快的实现功能。
到这里所有的代码都实现完成了,数了下,除掉注释,总共40行代码,是不是很简单,是不是很强大!上个我们实现的效果图:

留给你去实现的功能
想要掌握一个知识点,最好的方法就是去实践,这里给大家留两个小小的需求:
- 实现一个折线图,展示中国除湖北外每日新增确诊人数变化趋势图。
- 实现一个你所在城市,每天新增确诊人数变化的柱状图。
如果你完成了,可以将图片贴出来,大家一起分享交流下。可以将图片贴到知识星球相应的讨论主题(https://t.zsxq.com/Fuj2fY3),微信公众号回复消息貌似没办法回复图片。
带大家用40行python代码实现一个疫情地图的更多相关文章
- 40多行python代码开发一个区块链。
40多行python代码开发一个区块链?可信吗?我们将通过Python 2动手开发实现一个迷你区块链来帮你真正理解区块链技术的核心原理.python开发区块链的源代码保存在Github. 尽管有人认为 ...
- 六十来行python代码完成一个文件分类器
你的桌面是否像这样的一样被各种文件给堆满了,但是每一个文件又不清楚是否后面还有作用,也不敢删除,自己一个一个转移又太麻烦了.没关系,今天我带大家用python一起来做一个文件归类器,一键进行 ...
- 如何用20行Python代码打造一个微信群聊助手?
今天要教大家一个黑科技,20行代码实现自己定制的微信群聊助手,可以用来活跃群气氛,好多群主创建完群后,拉完一群人,之后就一片寂静,有个群聊助手,就可以帮忙活跃群里气氛,通过今天在自己的微信上有一大批好 ...
- 一个 11 行 Python 代码实现的神经网络
一个 11 行 Python 代码实现的神经网络 2015/12/02 · 实践项目 · 15 评论· 神经网络 分享到:18 本文由 伯乐在线 - 耶鲁怕冷 翻译,Namco 校稿.未经许可,禁止转 ...
- 200行Python代码实现2048
200行Python代码实现2048 一.实验说明 1. 环境登录 无需密码自动登录,系统用户名shiyanlou 2. 环境介绍 本实验环境采用带桌面的Ubuntu Linux环境,实验中会用到桌面 ...
- 30行Python代码实现人脸检测
参考OpenCV自带的例子,30行Python代码实现人脸检测,不得不说,Python这个语言的优势太明显了,几乎把所有复杂的细节都屏蔽了,虽然效率较差,不过在调用OpenCV的模块时,因为模块都是C ...
- 21行python代码实现拼写检查器
引入 大家在使用谷歌或者百度搜索时,输入搜索内容时,谷歌总是能提供很好的拼写检查,比方你输入 speling,谷歌会立即返回 spelling. 前几天,看到http://norvig.com/spe ...
- 15行python代码,帮你理解令牌桶算法
本文转载自: http://www.tuicool.com/articles/aEBNRnU 在网络中传输数据时,为了防止网络拥塞,需限制流出网络的流量,使流量以比较均匀的速度向外发送,令牌桶算法 ...
- vim中凝视多行python代码
在vim中凝视多行python代码比較麻烦,主要由下面几种方法: (1)将须要凝视的代码以文档字符串的形式呈现 (2)将须要凝视的代码以函数的形式呈现 (3)使用vim自身快捷键 我们主要使用第三种方 ...
随机推荐
- Java并发-Java内存模型(JMM)
先来说说什么是内存模型吧 在硬件中,由于CPU的速度高于内存,所以对于数据读写来说会出现瓶颈,无法充分利用CPU的速度,因此在二者之间加入了一个缓冲设备,高速缓冲寄存器,通过它来实现内存与CPU的数据 ...
- Deepin Linux 实体机安装
Deepin Linux 实体机安装 1.下载ISO镜像并刻录到U盘上 系统ISO镜像下载 深度技术 刻录工具下载 深度技术(下方有深度启动盘制作工具下载) 这两个都下载好之后,打开刻录工具,选择镜像 ...
- matplotlib绘制符合论文要求的图片
最近需要将实验数据画图出来,由于使用python进行实验,自然使用到了matplotlib来作图. 下面的代码可以作为画图的模板代码,代码中有详细注释,可根据需要进行更改. # -*- coding: ...
- Java8 新特性(一)- Lambda 表达式
2014年3月18日发布了JavaSE 8 不追求技术的新,追求技术的稳定 本质:Lambda 表达式是一个匿名函数 作用:简化代码,增强代码的表达力 Lambda 语法格式 // 格式1:无参无返回 ...
- KindEditor.ready 不执行的解决方法
问题描述 按照官网的要求,一一都设置好了,但就是没法显示富文本编辑器. 1.设置好textarea输入框 <textarea id="myEditor" name=" ...
- 【转】ArcGIS Server 10.1 动态图层—添加栅格
本文将介绍如何通过arcgisserver10.1动态图层添加栅格影像.与添加矢量数据不同的是,天际栅格用到了RasterDataSource接口,如下所示 <esri:DynamicLayer ...
- 竹马竹马chikuma
[问题描述] 众所周知,zzh 和 heyi 是一对竹马竹马,他们从小一起学 C++,最后都成了著名的神犇.而时间回溯到他们童年,这天 zzh 邀请 heyi 来参加 zzh 举行的男性家庭聚会. 而 ...
- Redis-缓存穿透、缓存雪崩、缓存击穿、缓存一致性、并发竞争
缓存流程 在讲这五个问题之前,首先我们回顾下正常的缓存的使用流程 程序在处理请求时,会先从缓存中进行查询,如果缓存中没有对应的key,则会从数据库中查询,如果查询到结果,并将查询结果添加到缓存中去,反 ...
- Spring Boot2 系列教程 (十五) | 服务端参数校验之一
估计很多朋友都认为参数校验是客户端的职责,不关服务端的事.其实这是错误的,学过 Web 安全的都知道,客户端的验证只是第一道关卡.它的参数验证并不是安全的,一旦被有心人抓到可乘之机,他就可以有各种方法 ...
- Photoshop 2020安装教程
首先来看看新增功能 [Photoshop 2020新增功能] 1.ipad和云文档 2.预设改进 3.新对象选择工具 4.转换行为一致 5.改进的属性面板 6.智能对到图层 7.增强的转换变形. 需要 ...