使用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时间戳与时间字符串互相转换实例代码
Nov 28 Python
pycharm 使用心得(三)Hello world!
Jun 05 Python
浅谈python字典多键值及重复键值的使用
Nov 04 Python
Python OpenCV 直方图的计算与显示的方法示例
Feb 08 Python
python用插值法绘制平滑曲线
Feb 19 Python
PyQt5的PyQtGraph实践系列3之实时数据更新绘制图形
May 13 Python
python根据多个文件名批量查找文件
Aug 13 Python
python使用numpy实现直方图反向投影示例
Jan 17 Python
详解Python 重学requests发起请求的基本方式
Feb 07 Python
浅析Python中字符串的intern机制
Oct 03 Python
Python return语句如何实现结果返回调用
Oct 15 Python
Sublime Text3最新激活注册码分享适用2020最新版 亲测可用
Nov 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 生成的XML以FLASH获取为乱码终极解决
2009/08/07 PHP
实例讲解php数据访问
2016/05/09 PHP
实现变速回到顶部的JavaScript代码
2011/05/09 Javascript
setTimeout的延时为0时多个浏览器的区别
2012/05/23 Javascript
showModalDialog模态对话框的使用详解以及浏览器兼容
2014/01/11 Javascript
javascript匿名函数应用示例介绍
2014/03/07 Javascript
跟我学Nodejs(一)--- Node.js简介及安装开发环境
2014/05/20 NodeJs
javascritp添加url参数将参数加入到url中
2014/09/25 Javascript
jQuery实现菜单感应鼠标滑动动画效果的方法
2015/02/28 Javascript
JavaScript实现瀑布流布局
2020/06/28 Javascript
jQuery实现指定区域外单击关闭指定层的方法【经典】
2016/06/22 Javascript
JavaScript中this的用法及this在不同应用场景的作用解析
2017/04/13 Javascript
vue使用websocket的方法实例分析
2019/06/22 Javascript
keep-alive不能缓存多层级路由菜单问题解决
2020/03/10 Javascript
element-ui中dialog弹窗关闭按钮失效的解决
2020/09/22 Javascript
[03:01]DOTA2英雄基础教程 露娜
2014/01/07 DOTA
[35:43]2018DOTA2亚洲邀请赛 4.1 小组赛B组 paiN vs Effect
2018/04/03 DOTA
Python写的Discuz7.2版faq.php注入漏洞工具
2014/08/06 Python
python进阶教程之模块(module)介绍
2014/08/30 Python
Python实现加载及解析properties配置文件的方法
2018/03/29 Python
浅谈Python中的可迭代对象、迭代器、For循环工作机制、生成器
2019/03/11 Python
使用python切片实现二维数组复制示例
2019/11/26 Python
Lookfantastic西班牙官网:英国知名美妆购物网站
2018/06/13 全球购物
毕业生个人求职的自我评价
2013/10/28 职场文书
公司周年庆典邀请函
2014/01/12 职场文书
党校个人自我鉴定范文
2014/03/28 职场文书
公司合作意向书
2014/04/01 职场文书
幼儿园优秀班主任事迹材料
2014/05/14 职场文书
安全资料员岗位职责范本
2014/06/28 职场文书
感谢信怎么写
2015/01/21 职场文书
酒店辞职书范文
2015/02/26 职场文书
生日寿星公答谢词
2015/09/29 职场文书
2016廉政教育学习心得体会
2016/01/25 职场文书
母婴行业实体、电商模式全面解析
2019/08/01 职场文书
vue的项目如何打包上线
2022/04/13 Vue.js
Linux安装Docker详细教程
2022/07/07 Servers