使用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实现服务器中只重载被修改的进程的方法
Apr 30 Python
python处理csv中的空值方法
Jun 22 Python
python中partial()基础用法说明
Dec 30 Python
Python Datetime模块和Calendar模块用法实例分析
Apr 15 Python
python整合ffmpeg实现视频文件的批量转换
May 31 Python
django迁移数据库错误问题解决
Jul 29 Python
修改Pandas的行或列的名字(重命名)
Dec 18 Python
python数据库编程 Mysql实现通讯录
Mar 27 Python
python开发一款翻译工具
Oct 10 Python
python 调整图片亮度的示例
Dec 03 Python
python-jwt用户认证食用教学的实现方法
Jan 19 Python
Python极值整数的边界探讨分析
Sep 15 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中应该避免使用同名变量(拆分临时变量)
2015/04/03 PHP
php函数重载的替代方法--伪重载详解
2015/05/08 PHP
PHP实现通过URL提取根域名
2016/03/31 PHP
PHP自定义函数实现格式化秒的方法
2016/09/14 PHP
PHP用户管理中常用接口调用实例及解析(含源码)
2017/03/09 PHP
jQuery get和post 方法传值注意事项
2009/11/03 Javascript
纯JavaScript实现的完美渐变弹出层效果代码
2010/04/02 Javascript
jquery实现图片灯箱明暗的遮罩效果
2013/11/15 Javascript
jquery checkbox实现单选小例
2013/11/27 Javascript
jquery获取radio值实例
2014/10/16 Javascript
jQuery实现的感应鼠标悬停图片色彩渐显效果
2015/03/03 Javascript
详解axios在node.js中的post使用
2017/04/27 Javascript
vue组件学习教程
2017/09/09 Javascript
基于vue,vue-router, vuex及addRoutes进行权限控制问题
2018/05/02 Javascript
vue props传值失败 输出undefined的解决方法
2018/09/11 Javascript
解决vue-cli脚手架打包后vendor文件过大的问题
2018/09/27 Javascript
Nuxt升级2.0.0时出现的问题(小结)
2018/10/08 Javascript
简单实现vue中的依赖收集与响应的方法
2019/02/18 Javascript
vue 实现搜索的结果页面支持全选与取消全选功能
2019/05/10 Javascript
Vue实现多页签组件
2021/01/14 Vue.js
[02:16]2018年度CS GO最具人气选手-完美盛典
2018/12/16 DOTA
Python实现个人微信号自动监控告警的示例
2019/07/03 Python
使用python的turtle函数绘制一个滑稽表情
2020/02/28 Python
Python基于Tkinter编写crc校验工具
2020/05/06 Python
html5服务器推送_动力节点Java学院整理
2017/07/12 HTML / CSS
美国最大的珠宝商之一:Littman Jewelers
2016/11/13 全球购物
美国餐厅用品和厨房设备批发网站:KaTom Restaurant Supply
2018/01/27 全球购物
在Ajax应用中信息是如何在浏览器和服务器之间传递的
2016/05/31 面试题
教育专业自荐书范文
2013/12/17 职场文书
幼儿园中秋节活动反思
2014/02/16 职场文书
《九色鹿》教学反思
2014/02/27 职场文书
党的群众路线教育实践活动个人剖析材料
2014/10/07 职场文书
李强为自己工作观后感
2015/06/11 职场文书
小学班主任培训心得体会
2016/01/07 职场文书
幼儿园科学课教学反思
2016/03/03 职场文书
判断Python中的Nonetype类型
2021/05/25 Python