实时追踪,如何用Python画新冠状病毒疫情地图?

网上一搜,首先搜到的是腾讯的疫情实时追踪,那就用这个数据源吧。

有了网址怎么抓数据呢?这里,我送大家一双火眼金睛,可以从纷乱中找到最靠谱的下载方式。我习惯用FireFox浏览器,下面的讲解就以FireFox为例(其他浏览器基本类似)。

打开菜单,点击“Web开发者”,在递进菜单中选择"网络":

刷新页面,我们很快就能发现,应答类型为json格式的这个请求,最有可能包含我们需要的数据了:

如果你不想错过Python这么好的工具,又担心自学遇到问题无处解决,现在就可以Python的学习q u n 227-435-450可以来了解一起进步一起学习!免费分享视频资料

深入分析,我们就得到了url地址、请求方法、参数、应答格式等信息。查询参数中,callback是回调函数名,我们可以尝试置空,_应该是以毫秒为单位的当前时间戳。有了这些信息,分分钟就可以抓到数据了。我们先在IDLE中以交互方式抓一下看看效果:

>>> import time, json, requests>>> url = 'https://view.inews.qq.com/g2/getOnsInfo?name=wuwei_ww_area_counts&callback=&_=%d'%int(time.time()*1000)>>> data = json.loads(requests.get(url=url).json()['data'])>>> print(len(data))301>>> print(data[0]){'country': '中国', 'area': '湖北', 'city': '武汉', 'confirm': 698, 'suspect': 0, 'dead': 63, 'heal': 42}>>> print(data[-1]){'country': '中国', 'area': '山东', 'city': '枣庄', 'confirm': 2, 'suspect': 0, 'dead': 0, 'heal': 0}

只要两行代码,就可以抓到数据了。怎么样,是不是超级简单?

数据处理

以省为单位画疫情图,我们只需要统计同属一个省的所有地市的确诊数据即可。最终的数据抓取代码如下:

import time, json, requestsdef catch_distribution():    """抓取行政区域确诊分布数据"""        data = dict()    url = 'https://view.inews.qq.com/g2/getOnsInfo?name=wuwei_ww_area_counts&callback=&_=%d'%int(time.time()*1000)    for item in json.loads(requests.get(url=url).json()['data']):        if item['area'] not in data:            data.update({item['area']:0})        data[item['area']] += int(item['confirm'])        return data

数据可视化

数据可视化,我习惯使用matplotlib模块。matplotlib有很多扩展工具包(toolkits),比如,画3D需要mplot3d工具包,画地图的话,则需要basemap工具包,以及处理地图投影的pyproj模块。另外画海陆分界线、国界线、行政分界线等还需要shape数据。所需模块请自行安装,shape文件可以从这里下载,绘图用到的矢量字库可以从自己的电脑上随便找一个(我用的是simsun.ttf)。我的主程序是2019nCoV.py,shape文件下载下来之后,是这样保存的:





2019-nCoV疫情曲线:

2019-nCoV疫情地图:

上图为圆柱投影,这也是basemap默认的投影模式,我们还可以换用其他投影模式,比如兰勃托等角投影,只需要将97行代码改为:

兰勃托投影效果如下:

还可以使用正射投影:

正射投影效果如下:

本文来源于网络 如有侵权请联系作者删除

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • width: 65%;border: 1px solid #ddd;outline: 1300px solid #...
    邵胜奥阅读 10,395评论 0 1
  • pyspark.sql模块 模块上下文 Spark SQL和DataFrames的重要类: pyspark.sql...
    mpro阅读 13,222评论 0 13
  • 常用模块 认识模块 什么是模块 什么是模块? 常见的场景:一个模块就是一个包含了python定义和声明的文件,文...
    go以恒阅读 6,218评论 0 6
  • 这是一场桑拿。 或者说,这是一场以蒸桑拿为诱饵,实则实施谋杀的血案。 四围太热了,滚滚的热蒸汽,撩在人的皮肤上,留...
    风满楼呀阅读 3,418评论 2 7
  • 上午赶去长沙毛院听了堂文学讲座,下午赶回来下村网格走亲,然后再去接崽放学,也是蛮拼的了,风风火火铁娘子一枚啊! 下...
    春天里的紫苏阅读 1,477评论 1 0

友情链接更多精彩内容