使用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使用sorted函数对列表进行排序的方法
Apr 04 Python
python修改操作系统时间的方法
May 18 Python
Python模拟登录验证码(代码简单)
Feb 06 Python
Python编程中实现迭代器的一些技巧小结
Jun 21 Python
Python实现将字符串的首字母变为大写,其余都变为小写的方法
Jun 11 Python
python 怎样将dataframe中的字符串日期转化为日期的方法
Sep 26 Python
Python pygame绘制文字制作滚动文字过程解析
Dec 12 Python
Pycharm 安装 idea VIM插件的图文教程详解
Feb 21 Python
Python super()方法原理详解
Mar 31 Python
浅谈Python中文件夹和python package包的区别
Jun 01 Python
Python爬虫爬取微信朋友圈
Aug 06 Python
Python高并发和多线程有什么关系
Nov 14 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
松下Panasonic RF-B65电路分析
2021/03/02 无线电
PHP创建文件,并向文件中写入数据,覆盖,追加的实现代码
2016/03/25 PHP
PDO::inTransaction讲解
2019/01/28 PHP
PHP从零开始打造自己的MVC框架之入口文件实现方法详解
2019/06/03 PHP
JS中==与===操作符的比较
2009/03/21 Javascript
javascript十个最常用的自定义函数(中文版)
2009/09/07 Javascript
jquery弹出层类代码分享
2013/12/27 Javascript
jQuery弹出div层过2秒自动消失
2016/11/29 Javascript
[原创]JS基于FileSaver.js插件实现文件保存功能示例
2016/12/08 Javascript
将angular.js项目整合到.net mvc中的方法详解
2017/06/29 Javascript
解决vue keep-alive 数据更新的问题
2018/09/21 Javascript
Layui带搜索的下拉框的使用以及动态数据绑定方法
2019/09/28 Javascript
JavaScript实现英语单词题库
2019/12/24 Javascript
vant实现购物车功能
2020/06/29 Javascript
详解Vue2的diff算法
2021/01/06 Vue.js
python打开url并按指定块读取网页内容的方法
2015/04/29 Python
Python对列表去重的多种方法(四种方法)
2017/12/05 Python
深入理解Django-Signals信号量
2019/02/19 Python
python实现AES和RSA加解密的方法
2019/03/28 Python
Python生成MD5值的两种方法实例分析
2019/04/26 Python
python飞机大战pygame游戏背景设计详解
2019/12/17 Python
python标准库OS模块详解
2020/03/10 Python
CSS3 滤镜 webkit-filter详细介绍及使用方法
2012/12/27 HTML / CSS
任意一块网页内容实现“活”的背景(目前火狐浏览器专有)
2014/05/07 HTML / CSS
BLACKMORES澳洲官网:澳大利亚排名第一的保健品牌
2018/09/27 全球购物
PHP使用Redis队列执行定时任务实例讲解
2021/03/24 PHP
房地产销售经理岗位职责
2014/01/01 职场文书
违反校纪校规检讨书
2014/02/15 职场文书
高二学生评语大全
2014/04/25 职场文书
建设工地安全标语
2014/06/07 职场文书
保险专业求职信
2014/07/07 职场文书
员工培训协议书
2014/09/15 职场文书
公务员考察材料
2014/12/23 职场文书
保卫工作个人总结
2015/03/03 职场文书
5种 JavaScript 方式实现数组扁平化
2021/10/05 Javascript
带你了解Java中的ForkJoin
2022/04/28 Java/Android