使用Python制作新型冠状病毒实时疫情图


Posted in Python onJanuary 28, 2020

最近一周每天早上起来第一件事,就是打开新闻软件看疫情相关的新闻。了解下自己和亲友所在城市的确诊人数,但纯数字还是缺乏一个直观的概念。那我们来做一个吧。

至于数据,从各大网站的实时疫情页面就可以拿到。以某网站为例,用requests拿到html后,发现并没有数据。不要慌,那证明是个javascript渲染的页面,即使是javascript也是需要从后台取数据的。打开Chrome开发者工具,点开network,刷新页面,点击各个请求,肯定有一个是取json的。

使用Python制作新型冠状病毒实时疫情图

注意这里的返回数据是包含在一个js变量的,用正则处理下就好,然后用python自带的json.loads方法就可以转为dict了

result = requests.get(
    'https://interface.sina.cn/news/wap/fymap2020_data.d.json?1580097300739&&callback=sinajp_1580097300873005379567841634181')
  json_str = re.search("\(+([^)]*)\)+", result.text).group(1)

  html = f"{json_str}"
  table = json.loads(f"{html}")

数据格式很简单,省数据和下属城市的数据

{ 'city': [  {  'conNum': '4',
          'cureNum': '0',
          'deathNum': '0',
          'name': '乌鲁木齐',
          'susNum': '0'},
        {  'conNum': '1',
          'cureNum': '0',
          'deathNum': '0',
          'name': '伊犁州',
          'susNum': '0'}],
  'cureNum': '0',
  'deathNum': '0',
  'name': '新疆',
  'susNum': '0',
  'value': '5'}

英语好的同学可以直接猜到cureNum是治愈数,deathNum是死亡人数。value应该是确诊数,其它字段可以根据原网站表格确定

最直观的图表当然是地图了。国内大厂出的echarts自然会对国内地图有最好的支持。用pip安装pyecharts, 以及两个数据包echarts-china-provinces-pypkg
echarts-china-cities-pypkg 即可

遍历下json数据,把省名和确诊数存在data数据里传给map对象就好

for province in table['data']['list']:
    pp.pprint(province)
    data.append((province['name'], province['value']))

    for city in province['city']:
      pp.pprint(city)
map_p = Map()
map_p.set_global_opts(title_opts=opts.TitleOpts(title="实时疫情图"), visualmap_opts=opts.VisualMapOpts(max_=100))
map_p.add("确诊", data, maptype="china")
map_p.render("ncov.html") # 生成html文件

代码很简单,注意max是决定渲染颜色的。效果图如下

使用Python制作新型冠状病毒实时疫情图

达到100确诊的省份一目了然。感兴趣的同学还可以制作市级别或者世界地图。

最后祝愿早日都变为蓝色吧。武汉加油,中国加油!

总结

以上所述是小编给大家介绍的使用Python制作新型冠状病毒实时疫情图,希望对大家有所帮助!

Python 相关文章推荐
python解析json实例方法
Nov 19 Python
python的Template使用指南
Sep 11 Python
Python的条件语句与运算符优先级详解
Oct 13 Python
浅谈python字典多键值及重复键值的使用
Nov 04 Python
Python装饰器原理与用法分析
Apr 30 Python
在pycharm中设置显示行数的方法
Jan 16 Python
Python 的AES加密与解密实现
Jul 09 Python
python自动发微信监控报警
Sep 06 Python
Pytorch 多维数组运算过程的索引处理方式
Dec 27 Python
Python如何在DataFrame增加数值
Feb 14 Python
关于python 的legend图例,参数使用说明
Apr 17 Python
使用OpenCV去除面积较小的连通域
Jul 05 Python
代码总结Python2 和 Python3 字符串的区别
Jan 28 #Python
使用Python爬虫库BeautifulSoup遍历文档树并对标签进行操作详解
Jan 25 #Python
Python爬虫库BeautifulSoup获取对象(标签)名,属性,内容,注释
Jan 25 #Python
Python爬虫库BeautifulSoup的介绍与简单使用实例
Jan 25 #Python
使用Python爬虫库requests发送表单数据和JSON数据
Jan 25 #Python
Python爬虫库requests获取响应内容、响应状态码、响应头
Jan 25 #Python
使用Python爬虫库requests发送请求、传递URL参数、定制headers
Jan 25 #Python
You might like
Php+SqlServer实现分页显示
2006/10/09 PHP
php不用正则采集速度探究总结
2008/03/24 PHP
php网站地图生成类示例
2014/01/13 PHP
php+html5实现无刷新图片上传教程
2016/01/22 PHP
php微信公众号开发之秒杀
2018/10/20 PHP
PHP的微信支付接口使用方法讲解
2019/03/08 PHP
JS 页面内容搜索,类似于 Ctrl+F功能的实现代码
2007/08/13 Javascript
js内存泄露的几种情况详细探讨
2013/05/31 Javascript
jquery select 设置默认选中的示例代码
2014/02/07 Javascript
深入分析Javascript跨域问题
2015/04/17 Javascript
javascript实现校验文件上传控件实例
2015/04/20 Javascript
Bootstrap框架下下拉框select搜索功能
2020/03/26 Javascript
js数据类型检测总结
2018/08/05 Javascript
Vue中的Props(不可变状态)
2018/09/29 Javascript
JS根据json数组多个字段排序及json数组常用操作
2019/06/06 Javascript
微信小程序开发之map地图组件定位并手动修改位置偏差
2019/08/17 Javascript
JS async 函数的含义和用法实例总结
2020/04/08 Javascript
vue 出现data-v-xxx的原因及解决
2020/08/04 Javascript
[03:24]CDEC.Y赛前采访 努力备战2016国际邀请赛中国区预选赛
2016/06/25 DOTA
Python中尝试多线程编程的一个简明例子
2015/04/07 Python
举例讲解Python中字典的合并值相加与异或对比
2016/06/04 Python
浅谈python配置与使用OpenCV踩的一些坑
2018/04/02 Python
Python格式化日期时间操作示例
2018/06/28 Python
django 通过URL访问上传的文件方法
2019/07/28 Python
python gdal安装与简单使用
2019/08/01 Python
Python List列表对象内置方法实例详解
2019/10/22 Python
Django实现分页显示效果
2019/10/31 Python
Python requests模块基础使用方法实例及高级应用(自动登陆,抓取网页源码)实例详解
2020/02/14 Python
高级方案规划工程师岗位职责
2013/11/29 职场文书
五年级英语教学反思
2014/01/31 职场文书
入股协议书
2014/04/14 职场文书
医院保洁员岗位职责
2015/02/13 职场文书
2015年安康杯竞赛活动总结
2015/03/26 职场文书
幼儿园万圣节活动总结
2015/05/05 职场文书
导游词之泉州崇武古城
2019/12/20 职场文书
SQL SERVER中的流程控制语句
2022/05/25 SQL Server