使用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中非常实用的一些功能和函数分享
Feb 14 Python
使用FastCGI部署Python的Django应用的教程
Jul 22 Python
从零开始学Python第八周:详解网络编程基础(socket)
Dec 14 Python
Python urls.py的三种配置写法实例详解
Apr 28 Python
python+requests+unittest API接口测试实例(详解)
Jun 10 Python
python正则表达式re之compile函数解析
Oct 25 Python
python中yaml配置文件模块的使用详解
Apr 27 Python
opencv 图像滤波(均值,方框,高斯,中值)
Jul 08 Python
python 8种必备的gui库
Aug 27 Python
python 模拟登陆github的示例
Dec 04 Python
学会迭代器设计模式,帮你大幅提升python性能
Jan 03 Python
Python Matplotlib绘制等高线图与渐变色扇形图
Apr 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
PHP支持多种格式图片上传(支持jpg、png、gif)
2011/11/03 PHP
openflashchart 2.0 简单案例php版
2012/05/21 PHP
php时间戳转换的示例
2014/03/31 PHP
使用PHP把HTML生成PDF文件的几个开源项目介绍
2014/11/17 PHP
PHP也能干大事 随机函数
2015/04/14 PHP
PHP输出缓冲控制Output Control系列函数详解
2015/07/02 PHP
PHP时间类完整实例(非常实用)
2015/12/25 PHP
PHP正则表达式匹配替换与分割功能实例浅析
2017/02/04 PHP
laravel框架如何设置公共头和公共尾
2019/10/22 PHP
PHP7 其他语言层面的修改
2021/03/09 PHP
jQuery学习3:操作元素属性和特性
2010/02/07 Javascript
JavaScript字符串插入、删除、替换函数使用示例
2013/07/25 Javascript
JavaScript中的undefined学习总结
2013/11/30 Javascript
js AppendChild与insertBefore用法详细对比
2013/12/16 Javascript
jquery实现鼠标拖动图片效果示例代码
2014/01/09 Javascript
JavaScript获取网页、浏览器、屏幕高度和宽度汇总
2014/12/18 Javascript
js Calender控件使用详解
2015/01/05 Javascript
javascript获取四位数字或者字母的随机数
2015/01/09 Javascript
一看就懂:jsonp详解
2015/06/01 Javascript
jQuery插件扩展测试实例
2016/06/21 Javascript
bootstrap jquery dataTable 异步ajax刷新表格数据的实现方法
2017/02/10 Javascript
JS使用Chrome浏览器实现调试线上代码
2020/07/23 Javascript
python使用rabbitmq实现网络爬虫示例
2014/02/20 Python
记录Django开发心得
2014/07/16 Python
Python OpenCV实现图片上输出中文
2018/01/22 Python
Django如何自定义分页
2018/09/25 Python
numpy 计算两个数组重复程度的方法
2018/11/07 Python
Python 爬取必应壁纸的实例讲解
2020/02/24 Python
python collections模块的使用
2020/10/16 Python
美国校服网上商店:French Toast
2019/10/08 全球购物
视光学毕业生自荐书范文
2014/02/13 职场文书
党的群众路线对照检查材料(个人)
2014/09/24 职场文书
社区法制宣传日活动总结
2015/05/05 职场文书
企业战略合作意向书
2015/05/08 职场文书
春节随笔
2015/08/15 职场文书
MySQL数据库实验之 触发器和存储过程
2022/06/21 MySQL