使用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中关键字is与==的区别简述
Jul 31 Python
在Python中使用dict和set方法的教程
Apr 27 Python
python中正则的使用指南
Dec 04 Python
[原创]教女朋友学Python3(二)简单的输入输出及内置函数查看
Nov 30 Python
Python3 实现串口两进程同时读写
Jun 12 Python
python或C++读取指定文件夹下的所有图片
Aug 31 Python
python实现文件批量编码转换及注意事项
Oct 14 Python
Python Print实现在输出中插入变量的例子
Dec 25 Python
Python实现RabbitMQ6种消息模型的示例代码
Mar 30 Python
如何利用python 读取配置文件
Jan 06 Python
超详细Python解释器新手安装教程
May 10 Python
python获取带有返回值的多线程
May 02 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/04/17 PHP
php封装的page分页类完整实例代码
2020/02/01 PHP
NodeJS框架Express的模板视图机制分析
2011/07/19 NodeJs
js实现顶部可折叠的菜单工具栏效果实例
2015/05/09 Javascript
JS组件系列之Bootstrap table表格组件神器【终结篇】
2016/05/10 Javascript
原生js实现可爱糖果数字时间特效
2016/12/30 Javascript
js实现百度搜索提示框
2017/02/05 Javascript
获取url中用&隔开的参数实例(分享)
2017/05/28 Javascript
jquery Ajax实现Select动态添加数据
2017/06/08 jQuery
Vue 2.0 中依赖注入 provide/inject组合实战
2019/06/20 Javascript
vue.js 打包时出现空白页和路径错误问题及解决方法
2019/06/26 Javascript
微信小程序使用车牌号输入法的示例代码
2019/08/20 Javascript
微信小程序实现锚点功能
2019/11/20 Javascript
微信小程序入门之指南针
2020/10/22 Javascript
python实现目录树生成示例
2014/03/28 Python
python中的函数用法入门教程
2014/09/02 Python
Django框架中处理URLconf中特定的URL的方法
2015/07/20 Python
对python 数据处理中的LabelEncoder 和 OneHotEncoder详解
2018/07/11 Python
python用win32gui遍历窗口并设置窗口位置的方法
2019/07/26 Python
Python socket 套接字实现通信详解
2019/08/27 Python
pandas apply多线程实现代码
2020/08/17 Python
pyqt5实现井字棋的示例代码
2020/12/07 Python
详解Python遍历列表时删除元素的正确做法
2021/01/07 Python
HTML5新增的Css选择器、伪类介绍
2013/08/07 HTML / CSS
英国皇家邮政海外旗舰店:Royal Mail
2018/02/21 全球购物
英国山地公路自行车商店:Tweeks Cycles
2018/03/16 全球购物
西班牙土拨鼠床垫公司,感觉在云端:Marmota
2019/03/18 全球购物
FILA德国官方网站:来自意大利的体育和街头服饰品牌
2019/07/19 全球购物
Tomcat中怎么使用log4j输出所有的log
2016/07/07 面试题
干部个人对照检查材料
2014/08/25 职场文书
武夷山导游词
2015/02/03 职场文书
员工辞职信怎么写
2015/02/27 职场文书
上班迟到检讨书范文
2015/05/06 职场文书
办公室主任岗位竞聘书
2015/09/15 职场文书
MySQL COUNT函数的使用与优化
2021/05/10 MySQL
SQL之各种join小结详细讲解
2021/08/04 MySQL