使用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的id()函数介绍
Feb 10 Python
Python作用域用法实例详解
Mar 15 Python
浅谈python中的正则表达式(re模块)
Oct 17 Python
解决Mac下使用python的坑
Aug 13 Python
Python K最近邻从原理到实现的方法
Aug 15 Python
python单向链表的基本实现与使用方法【定义、遍历、添加、删除、查找等】
Oct 24 Python
Python 炫技操作之合并字典的七种方法
Apr 10 Python
解决django migrate报错ORA-02000: missing ALWAYS keyword
Jul 02 Python
基于python图书馆管理系统设计实例详解
Aug 05 Python
Docker如何部署Python项目的实现详解
Oct 26 Python
selenium+headless chrome爬虫的实现示例
Jan 08 Python
Python 无限级分类树状结构生成算法的实现
Jan 21 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数组应该有多大的分析
2009/07/30 PHP
PHP实现仿Google分页效果的分页函数
2015/07/29 PHP
php微信公众号开发(2)百度BAE搭建和数据库使用
2016/12/15 PHP
用JavaScrpt实现文件夹简单轻松加密的实现方法图文
2008/09/08 Javascript
JavaScript 学习笔记(十一)
2010/01/19 Javascript
setTimeout函数兼容各主流浏览器运行执行效果实例
2013/06/13 Javascript
JS简单的轮播的图片滚动实例
2013/06/17 Javascript
jquery $.fn $.fx是什么意思有什么用
2013/11/04 Javascript
jQuery/CSS3图片特效插件整理推荐
2014/12/07 Javascript
node.js中的fs.closeSync方法使用说明
2014/12/17 Javascript
JavaScript控制浏览器全屏及各种浏览器全屏模式的方法、属性和事件
2015/12/20 Javascript
js+css实现回到顶部按钮(back to top)
2016/03/02 Javascript
在DWR中实现直接获取一个JAVA类的返回值的两种方法
2016/12/25 Javascript
node.js实现登录注册页面
2017/04/08 Javascript
jquery动态赋值id与动态取id方法示例
2017/08/21 jQuery
CKeditor4 字体颜色功能配置方法教程
2019/06/26 Javascript
vue监听滚动事件的方法
2020/12/21 Vue.js
[04:37]DOTA2英雄梦之声Vol20发条
2014/06/20 DOTA
[04:03][TI9趣味短片] 小鸽子茶话会
2019/08/20 DOTA
python 运算符 供重载参考
2009/06/11 Python
python图书管理系统
2020/04/05 Python
Flask框架URL管理操作示例【基于@app.route】
2018/07/23 Python
python实现的Iou与Giou代码
2020/01/18 Python
解决pycharm修改代码后第一次运行不生效的问题
2021/02/06 Python
DHC中国官方购物网站:日本通信销售No.1化妆品
2016/08/20 全球购物
英国鹦鹉店:Parrot Essentials
2018/12/03 全球购物
大学毕业的自我鉴定
2013/10/08 职场文书
会计找工作求职信范文
2013/12/09 职场文书
新闻编辑求职信
2014/07/13 职场文书
公司离职证明范本(5篇)
2014/09/17 职场文书
二手车交易协议书标准版
2014/11/16 职场文书
房屋租房协议书范本
2014/12/04 职场文书
大学生入党群众意见书
2015/06/02 职场文书
学校安全管理制度
2015/08/06 职场文书
Flutter集成高德地图并添加自定义Maker的实践
2022/04/07 Java/Android
Android中View.post和Handler.post的关系
2022/06/05 Java/Android