使用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 MD5文件生成码
Jan 12 Python
Python中获取网页状态码的两个方法
Nov 03 Python
python使用xlrd与xlwt对excel的读写和格式设定
Jan 21 Python
详解python实现识别手写MNIST数字集的程序
Aug 03 Python
python获取时间及时间格式转换问题实例代码详解
Dec 06 Python
Windows下PyCharm2018.3.2 安装教程(图文详解)
Oct 24 Python
Python搭建代理IP池实现检测IP的方法
Oct 27 Python
如何通过python实现全排列
Feb 11 Python
Python web如何在IIS发布应用过程解析
May 27 Python
基于Django快速集成Echarts代码示例
Dec 01 Python
Python之京东商品秒杀的实现示例
Jan 06 Python
梳理总结Python开发中需要摒弃的18个坏习惯
Jan 22 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/06/29 PHP
php explode函数实例代码
2012/02/27 PHP
PHP setTime 设置当前时间的代码
2012/08/27 PHP
php生成zip压缩文件的方法详解
2013/06/09 PHP
PHP使用redis消息队列发布微博的方法示例
2017/06/22 PHP
Laravel5.* 打印出执行的sql语句的方法
2017/07/24 PHP
PhpStorm配置Xdebug调试的方法步骤
2019/02/02 PHP
Javascript 圆角div的实现代码
2009/10/15 Javascript
利用CSS、JavaScript及Ajax实现高效的图片预加载
2013/10/16 Javascript
简单实用的全选反选按钮例子
2013/10/18 Javascript
Javascript单元测试框架QUnitjs详细介绍
2014/05/08 Javascript
js取整数、取余数的方法
2014/05/11 Javascript
详解Node.js包的工程目录与NPM包管理器的使用
2016/02/16 Javascript
JQuery遍历元素的父辈和祖先的方法
2016/09/18 Javascript
js的OOP继承实现(必看篇)
2017/02/18 Javascript
Vue 动态设置路由参数的案例分析
2018/04/24 Javascript
JS实现全屏预览F11功能的示例代码
2018/07/23 Javascript
Node.js assert断言原理与用法分析
2019/01/04 Javascript
Vue如何实现变量表达式选择器
2021/02/18 Vue.js
[39:07]LGD vs VP 2018国际邀请赛淘汰赛BO3 第二场 8.21
2018/08/22 DOTA
Python进程间通信Queue实例解析
2018/01/25 Python
Python选择网卡发包及接收数据包
2019/04/04 Python
python基于itchat模块实现微信防撤回
2019/04/29 Python
基于Python共轭梯度法与最速下降法之间的对比
2020/04/02 Python
关于canvas.toDataURL 在iOS运行失败的问题解决
2020/09/16 HTML / CSS
蒂芙尼澳大利亚官方网站:Tiffany&Co. Australia
2017/08/27 全球购物
Nike瑞典官方网站:Nike.com (SE)
2018/11/26 全球购物
Hotels.com日本:国外和海外住宿,酒店预订
2019/12/13 全球购物
竞选班长演讲稿
2013/12/30 职场文书
会议邀请函范文
2014/01/09 职场文书
实习会计求职自荐信范文
2014/03/10 职场文书
卫生主题班会
2015/08/14 职场文书
导游词之千岛湖
2019/09/23 职场文书
mysql timestamp比较查询遇到的坑及解决
2021/11/27 MySQL
flex弹性布局详解
2022/03/20 HTML / CSS
Python面试不修改数组找出重复的数字
2022/05/20 Python