使用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解析json实例方法
Nov 19 Python
跟老齐学Python之编写类之二方法
Oct 11 Python
Python数据类型学习笔记
Jan 13 Python
python anaconda 安装 环境变量 升级 以及特殊库安装的方法
Jun 21 Python
python实现统计文本中单词出现的频率详解
May 20 Python
用python打印菱形的实操方法和代码
Jun 25 Python
python如何解析配置文件并应用到项目中
Jun 27 Python
Python通过4种方式实现进程数据通信
Mar 12 Python
用Python在Excel里画出蒙娜丽莎的方法示例
Apr 28 Python
python实例化对象的具体方法
Jun 17 Python
Python unittest基本使用方法代码实例
Jun 29 Python
python实现粒子群算法
Oct 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
Yii核心组件AssetManager原理分析
2014/12/02 PHP
php提交表单发送邮件的方法
2015/03/20 PHP
php使用Jpgraph绘制复杂X-Y坐标图的方法
2015/06/10 PHP
PHP框架Laravel插件Pagination实现自定义分页
2020/04/22 PHP
不错的asp中显示新闻的功能
2006/10/13 Javascript
新浪的图片新闻效果
2007/01/13 Javascript
通过JAVAScript实现页面自适应
2007/01/19 Javascript
在javascript中关于节点内容加强
2013/04/11 Javascript
JS获取表格内指定单元格html内容的方法
2015/03/31 Javascript
Js数组排序函数sort()介绍
2015/06/08 Javascript
异步JS框架的作用以及实现方法
2015/10/29 Javascript
js鼠标点击图片切换效果实现代码
2015/11/19 Javascript
JavaScript的函数式编程基础指南
2016/03/19 Javascript
浅析BootStrap中Modal(模态框)使用心得
2016/12/24 Javascript
jquery实现弹窗功能(窗口居中显示)
2017/02/27 Javascript
Vue生命周期示例详解
2017/04/12 Javascript
详谈js模块化规范
2017/07/07 Javascript
微信小程序实现拖拽 image 触摸事件监听的实例
2017/08/17 Javascript
weex里Vuex state使用storage持久化详解
2017/09/09 Javascript
webpack-dev-server远程访问配置方法
2018/02/22 Javascript
Vue列表循环从指定下标开始的多种解决方案
2020/04/08 Javascript
toString.call()通用的判断数据类型方法示例
2020/08/28 Javascript
Python性能优化技巧
2015/03/09 Python
python二维键值数组生成转json的例子
2019/12/06 Python
详解Python中的分支和循环结构
2020/02/11 Python
Python dict和defaultdict使用实例解析
2020/03/12 Python
jupyter 使用Pillow包显示图像时inline显示方式
2020/04/24 Python
新西兰最大的品牌运动鞋购物网站:Platypus NZ
2017/10/27 全球购物
欧洲品牌瓷器餐具网上商店:Porzellantreff.de
2018/04/04 全球购物
Blank NYC官网:夹克、牛仔裤等
2020/12/16 全球购物
《棉鞋里的阳光》教学反思
2014/04/24 职场文书
人事任命书范文
2014/06/04 职场文书
乡镇科协工作总结2015
2015/05/19 职场文书
环境卫生整治简报
2015/07/20 职场文书
患者身份识别制度
2015/08/06 职场文书
基于MySql验证的vsftpd虚拟用户
2021/11/07 MySQL