带大家用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自身快捷键 我们主要使用第三种方 ...
随机推荐
- kafka sasl/plain安全认证
1.SASL认证机制版本支持 SASL/GSSAPI (Kerberos) - starting at version 0.9.0.0SASL/PLAIN - starting at version ...
- Linux下安装oracle提示INS-20802 Oracle Net Configuration Assistant
安装oracle的时候,在最后install过程中,突然弹出INS-20802 :Oracle Net Configuration Assistant 错误. 查了一些资料,也尝试了很多,但是最终尝试 ...
- 微信生成二维码 PHP
<?php /** * Created by PhpStorm. * User: liyiming * Date: 2019/8/8 * Time: 14:23 */ # 生成二维码 class ...
- JWT(二):使用 Java 实现 JWT
JWT(一):认识 JSON WebToken JWT(二):使用 Java 实现 JWT 介绍 原理在上篇<JWT(一):认识 JSON Web Token>已经说过了,实现起来并不难, ...
- docker 批量删除 镜像 容器
我们在docker构建和测试时,经常会产生很多无用的镜像或者容器,我们可用如下两条命令一个一个删除. docker container rm 容器id #删除容器 可简写: docker rm 容器i ...
- 一个动态扩展表格控件列和行的 jQuery 插件
一个动态扩展表格控件列和行的 jQuery 插件 不过这并不影响使用鸭! 看这里:https://github.com/zhuwansu/table-ext.js 一个简单的示范 html <t ...
- vue需要知道哪些才能算作入门以及熟练
前两天接到一个面试官问我vue什么程度才算作可以用于开发,以前从没遇到过类似问题.只能大致说了一些,事后觉得也应该总结一下,前端vue这么火热那究竟什么才算做入门什么才算做熟练,只是我个人观点,不代表 ...
- [bzoj4444] [loj#2007] [洛谷P4155] [Scoi2015] 国旗计划
Description \(A\) 国正在开展一项伟大的计划--国旗计划.这项计划的内容是边防战士手举国旗环绕边境线奔袭一圈.这项计划需要多名边防战士以接力的形式共同完成,为此,国土安全局已经挑选了 ...
- 管道模式 pipe
先放一个图,预则立嘛
- 对接口运用扩展方法 Applying Extension Methods to an Interface 精通ASP-NET-MVC-5-弗瑞曼 Listing 4-15