使用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的ORM框架中的SQLAlchemy库的映射关系
Apr 25 Python
Python的Django应用程序解决AJAX跨域访问问题的方法
May 31 Python
基于Python socket的端口扫描程序实例代码
Feb 09 Python
用python实现百度翻译的示例代码
Mar 09 Python
Python高级用法总结
May 26 Python
python之线程通过信号pyqtSignal刷新ui的方法
Jan 11 Python
Python使用sklearn实现的各种回归算法示例
Jul 04 Python
Python编程学习之如何判断3个数的大小
Aug 07 Python
TensorFlow设置日志级别的几种方式小结
Feb 04 Python
python实现简单学生信息管理系统
Apr 09 Python
Python SMTP发送电子邮件的示例
Sep 23 Python
PyCharm 安装与使用配置教程(windows,mac通用)
May 12 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生成网页快照 不用COM不用扩展.
2010/02/11 PHP
PHP 数组排序方法总结 推荐收藏
2010/06/30 PHP
php命令行使用方法和命令行参数说明
2014/04/08 PHP
Parse正式发布开源PHP SDK
2014/08/11 PHP
php封装json通信接口详解及实例
2017/03/07 PHP
php-fpm开启状态统计的方法详解
2017/06/23 PHP
PHP中危险的file_put_contents函数详解
2017/11/04 PHP
JavaScript的类型转换(字符转数字 数字转字符)
2010/08/30 Javascript
基于jQuery的input输入框下拉提示层(自动邮箱后缀名)
2012/06/14 Javascript
有关于JS辅助函数inherit()的问题
2013/04/07 Javascript
用js读、写、删除Cookie代码续篇
2014/12/03 Javascript
JavaScript验证Email(3种方法)
2015/09/21 Javascript
jquery无限级联下拉菜单简单实例演示
2015/11/23 Javascript
轻松实现jquery手风琴效果
2016/01/14 Javascript
使用jquery/js获取iframe父子级、同级获取元素的方法
2016/08/05 Javascript
详解vue父子模版嵌套案例
2017/03/04 Javascript
JS实现图片旋转动画效果封装与使用示例
2018/07/09 Javascript
浅谈vue父子组件怎么传值
2018/07/21 Javascript
Vue核心概念Getter的使用方法
2019/01/18 Javascript
9102年webpack4搭建vue项目的方法步骤
2019/02/20 Javascript
解决Antd 里面的select 选择框联动触发的问题
2020/10/24 Javascript
[01:03:37]Secret vs VGJ.S Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
[01:17:55]VGJ.T vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/20 DOTA
python 将字符串转换成字典dict
2013/03/24 Python
Django使用中间键实现csrf认证详解
2019/07/22 Python
通过Python编写一个简单登录功能过程解析
2019/09/04 Python
浅谈tensorflow中张量的提取值和赋值
2020/01/19 Python
Python实现新型冠状病毒传播模型及预测代码实例
2020/02/05 Python
浅谈Pytorch torch.optim优化器个性化的使用
2020/02/20 Python
静态成员和非静态成员的区别
2012/05/12 面试题
社区包粽子活动方案
2014/01/21 职场文书
大学毕业生求职自荐书
2014/06/05 职场文书
运动会广播稿200字(10篇)
2014/10/12 职场文书
劳动保障个人工作总结
2015/03/04 职场文书
三好学生竞选稿
2015/11/21 职场文书
Python必备技巧之字符数据操作详解
2022/03/23 Python