20

带大家用40行python代码实现一个疫情地图

 4 years ago
source link: https://segmentfault.com/a/1190000021755290
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

最近两个月,因为新冠病毒无情的肆虐,相信会给每个中国人的记忆中画上重重的一笔。到今天为止,疫情形势依然十分严峻,虽然除湖北外的其他省份已经连续十一天确诊人数下降,但是接下来还有将近至少1.6亿的人口迁徙,这无疑还存在一定的风险。

相信很多人和我一样,早上起床的第一件事情都是查看疫情数据,一般的数据都配有中国 确诊人数 的地图,之前看到csdn推过一篇文章,有同学用python实现疫情地图,我觉得挺有意思的,于是就尝试自己动手也写一个,主要用到如下的库:

- 网络请求:requests
- 绘制图表的库:pyecharts

获取疫情数据

在腾讯新闻和支付宝中,都能看到疫情数据,但是获取支付宝的数据难度相对大一些,所以决定从腾讯新闻的数据入手,首先在chrome中打开链接: https://news.qq.com//zt2020/p... ,然后通过chrome开发者工具(F12)过滤对应的XHR接口(XHR格式的接口,是ajax异步请求网络数据的接口,一般定义的接口可通过XHR过滤),如下图:

jm2UBvy.png!web

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

zYve2ae.png!web

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

ZrU3QbR.png!web

上面的代码需要注意一点,就是requests.get(data_url).json()["data"]返回的是字符串,需要将其转成json,才能从中将值取出来。现在数据有了,万事俱备,只欠东风!接下来我们开始绘制中国地图。

绘制地图

python中进行图表绘制的库主要有两个: matplotlibpyecharts , 相比较而言:

  • matplotlib中提供了BaseMap可以用于地图的绘制,但是个人觉得其绘制的地图不太美观,另外一个重要的原因,其安装有点麻烦,可能存在兼容性问题。
  • pyecharts是基于百度开源的js库echarts而来,其最大的特点是: 简单 ,安装简单、使用也简单。

所以最终决定用pyecharts来绘制地图,其核心代码如下:

yAZRN3e.png!web

在pyecharts的 官方文档 ( https://pyecharts.org/#/zh-cn... ,最重要的,文档中提供了各种可供参考的demo,方便我们更快的实现功能。

到这里所有的代码都实现完成了,数了下,除掉注释,总共 40行 代码,是不是很简单,是不是很强大!上个我们实现的效果图:

N7N3Ina.png!web

留给你去实现的功能

想要掌握一个知识点,最好的方法就是去实践,这里给大家留两个小小的需求:

  • 实现一个折线图,展示中国除湖北外每日新增确诊人数变化趋势图。
  • 实现一个你所在城市,每天新增确诊人数变化的柱状图。

如果你完成了,可以将图片贴出来,大家一起分享交流下。可以将图片贴到知识星球相应的讨论主题( https://t.zsxq.com/Fuj2fY3) ,微信公众号回复消息貌似没办法回复图片。

关注【公众号:软件测试布道师】,回复【python】,即可获取【python自动化及编程实践资料】

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK