使用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之有容乃大的list(4)
Sep 28 Python
Python实现批量下载图片的方法
Jul 08 Python
使用Python神器对付12306变态验证码
Jan 05 Python
Python3 模块、包调用&路径详解
Oct 25 Python
Python使用tkinter库实现文本显示用户输入功能示例
May 30 Python
Python中GIL的使用详解
Oct 03 Python
Python数据结构之栈、队列及二叉树定义与用法浅析
Dec 27 Python
python实现倒计时小工具
Jul 29 Python
python实现文件批量编码转换及注意事项
Oct 14 Python
使用python实现画AR模型时序图
Nov 20 Python
Tensorflow训练模型越来越慢的2种解决方案
Feb 07 Python
使用Python获取爱奇艺电视剧弹幕数据的示例代码
Jan 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 文件类型判断代码
2009/03/13 PHP
hessian 在PHP中的使用介绍
2010/12/13 PHP
php header功能的使用
2013/10/28 PHP
php判断手机访问还是电脑访问示例分享
2014/01/20 PHP
php判断电脑访问、手机访问的例子
2014/05/10 PHP
PHP 无限级分类
2017/05/04 PHP
Yaf框架封装的MySQL数据库操作示例
2019/03/06 PHP
Mootools 1.2 手风琴(Accordion)教程
2009/09/15 Javascript
js解析与序列化json数据(一)json.stringify()的基本用法
2013/02/01 Javascript
js 窗口抖动示例
2013/09/04 Javascript
JavaScript中的比较操作符>、=、
2014/12/31 Javascript
JS验证IP,子网掩码,网关和MAC的方法
2015/07/02 Javascript
详细讲解JavaScript中的this绑定
2016/10/10 Javascript
jquery插件bootstrapValidator表单验证详解
2016/12/15 Javascript
ES6概念 ymbol.for()方法
2016/12/25 Javascript
JS实现一次性弹窗的方法【刷新后不弹出】
2016/12/26 Javascript
详解nodejs中exports和module.exports的区别
2017/02/17 NodeJs
vue中动态绑定表单元素的属性方法
2018/02/23 Javascript
JS浅拷贝和深拷贝原理与实现方法分析
2019/02/28 Javascript
用js简单提供增删改查接口
2019/05/12 Javascript
VueJS 取得 URL 参数值的方法
2019/07/19 Javascript
简单的Python抓taobao图片爬虫
2014/10/26 Python
Python下的常用下载安装工具pip的安装方法
2015/11/13 Python
Python实现定时精度可调节的定时器
2018/04/15 Python
Sanic框架应用部署方法详解
2018/07/18 Python
使用Python画股票的K线图的方法步骤
2019/06/28 Python
美国最好的保健品打折网店:Swanson
2017/08/04 全球购物
华美博弈C/VC工程师笔试试题
2012/07/16 面试题
结婚典礼证婚词
2014/01/11 职场文书
教学实验楼管理制度
2014/02/01 职场文书
本科生自荐信
2014/06/18 职场文书
2014年向国旗敬礼活动总结
2014/09/27 职场文书
学校领导班子四风问题整改意见
2014/10/02 职场文书
工人先锋号事迹材料(2016精选版)
2016/03/01 职场文书
Python pandas求方差和标准差的方法实例
2021/08/04 Python
海贼王十大逆天果实 魂魂果实上榜,岩浆果实攻击力最强
2022/03/18 日漫