使用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使用递归解决全排列数字示例
Feb 11 Python
详解Python的迭代器、生成器以及相关的itertools包
Apr 02 Python
Python实现模拟登录及表单提交的方法
Jul 25 Python
python分割列表(list)的方法示例
May 07 Python
python中将一个全部为int的list 转化为str的list方法
Apr 09 Python
将TensorFlow的模型网络导出为单个文件的方法
Apr 23 Python
Python requests模块实例用法
Feb 11 Python
Python OS模块实例详解
Apr 15 Python
python 并发编程 多路复用IO模型详解
Aug 20 Python
Python MongoDB 插入数据时已存在则不执行,不存在则插入的解决方法
Sep 24 Python
使用Pycharm分段执行代码
Apr 15 Python
使用OpenCV校准鱼眼镜头的方法
Nov 26 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中的boolean(布尔)类型详解
2013/10/28 PHP
PHP采用自定义函数实现遍历目录下所有文件的方法
2014/08/19 PHP
yii权限控制的方法(三种方法)
2015/12/28 PHP
简单的php+mysql聊天室实现方法(附源码)
2016/01/05 PHP
PHP 将数组打乱 shuffle函数的用法及简单实例
2016/06/17 PHP
使用ThinkPHP的自动完成实现无限级分类实例详解
2016/09/02 PHP
深入理解JavaScript系列(1) 编写高质量JavaScript代码的基本要点
2012/01/15 Javascript
jQuery easyui datagrid动态查询数据实例讲解
2013/02/26 Javascript
js数字转换为float,取N位小数
2014/02/08 Javascript
使用js操作css实现js改变背景图片示例
2014/03/10 Javascript
Javascript获取CSS伪元素属性的实现代码
2014/09/28 Javascript
Bootstrap项目实战之子栏目资讯内容
2016/04/25 Javascript
js实现将json数组显示前台table中
2017/01/10 Javascript
JavaScript对象引用与赋值实例详解
2017/03/15 Javascript
JQuery和html+css实现带小圆点和左右按钮的轮播图实例
2017/07/22 jQuery
Vue2几种常见开局方式详解
2017/09/09 Javascript
Vue全局loading及错误提示的思路与实现
2019/08/09 Javascript
关于layui导航栏不展示下拉列表的解决方法
2019/09/25 Javascript
小程序websocket心跳库(websocket-heartbeat-miniprogram)
2020/02/23 Javascript
通过实例解析JavaScript for in及for of区别
2020/06/15 Javascript
[00:33]2016完美“圣”典风云人物:Sccc宣传片
2016/12/03 DOTA
python正则表达式抓取成语网站
2013/11/20 Python
Python的Django框架中的数据过滤功能
2015/07/17 Python
PyCharm代码提示忽略大小写设置方法
2018/10/28 Python
家乐福巴西网上超市:Carrefour巴西
2016/10/31 全球购物
沙特阿拉伯电子产品和家用电器购物网站:Black Box
2019/07/24 全球购物
乌克兰在线商店的价格比较:Price.ua
2019/07/26 全球购物
质检部岗位职责
2013/11/11 职场文书
银行出纳岗位职责
2013/11/25 职场文书
学校后勤岗位职责
2014/02/19 职场文书
我读书我快乐演讲稿
2014/05/07 职场文书
药店采购员岗位职责
2014/09/30 职场文书
2014年建筑工作总结
2014/11/26 职场文书
创卫工作总结2015
2015/04/22 职场文书
社区节水倡议书
2015/04/29 职场文书
四年级数学教学反思
2016/02/16 职场文书