使用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实现通过shelve修改对象实例
Sep 26 Python
Python调用C语言开发的共享库方法实例
Mar 18 Python
200行自定义python异步非阻塞Web框架
Mar 15 Python
python爬虫实战之最简单的网页爬虫教程
Aug 13 Python
python虚拟环境virtualenv的使用教程
Oct 20 Python
Python语言描述机器学习之Logistic回归算法
Dec 21 Python
解决Tensorflow安装成功,但在导入时报错的问题
Jun 13 Python
Django接收post前端返回的json格式数据代码实现
Jul 31 Python
python 和c++实现旋转矩阵到欧拉角的变换方式
Dec 04 Python
如何学习Python time模块
Jun 03 Python
详解python爬取弹幕与数据分析
Nov 14 Python
Python如何实现感知器的逻辑电路
Dec 25 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+mysql写的留言本
2006/10/09 PHP
php学习之简单计算器实现代码
2011/06/09 PHP
php使用curl和正则表达式抓取网页数据示例
2014/04/13 PHP
10个实用的PHP正则表达式汇总
2014/10/23 PHP
提高php编程效率技巧
2015/08/13 PHP
PHP提取字符串中的手机号正则表达式怎么写
2017/07/17 PHP
PHP+Ajax实现上传文件进度条动态显示进度功能
2018/06/04 PHP
基于php伪静态的实现方法解析
2020/07/31 PHP
js 覆盖和重载 函数
2009/09/25 Javascript
Javascript结合css实现网页换肤功能
2009/11/02 Javascript
基于jQuery的input输入框下拉提示层(自动邮箱后缀名)
2012/06/14 Javascript
jQuery实现的多选框多级联动插件
2014/05/02 Javascript
jQuery+PHP实现微信转盘抽奖功能的方法
2016/05/25 Javascript
深入理解逻辑表达式的用法 与或非的用法
2016/06/06 Javascript
原生JS实现图片轮播效果
2016/12/26 Javascript
使用vue-resource进行数据交互的实例
2017/09/02 Javascript
Koa代理Http请求的示例代码
2018/10/10 Javascript
详解webpack引入第三方库的方式以及注意事项
2019/01/15 Javascript
vue--vuex详解
2019/04/15 Javascript
使用PreloadJS加载图片资源的基础方法详解
2020/02/03 Javascript
python处理csv数据动态显示曲线实例代码
2018/01/23 Python
解决nohup执行python程序log文件写入不及时的问题
2019/01/14 Python
解决python执行不输出系统命令弹框的问题
2019/06/24 Python
使用python批量转换文件编码为UTF-8的实现
2020/04/03 Python
python读取hdfs上的parquet文件方式
2020/06/06 Python
Python Selenium自动化获取页面信息的方法
2020/08/31 Python
python3:excel操作之读取数据并返回字典 + 写入的案例
2020/09/01 Python
全球虚拟主机商:HostGator
2017/02/06 全球购物
考试作弊被抓检讨书
2014/01/10 职场文书
预备党员承诺书
2014/03/25 职场文书
奥林匹克运动会口号
2014/06/19 职场文书
担保书格式范文
2015/09/22 职场文书
新郎父母婚礼答谢词
2015/09/29 职场文书
社区干部培训心得体会
2016/01/06 职场文书
使用Python拟合函数曲线
2022/04/14 Python
详解Flutter网络请求Dio库的使用及封装
2022/04/14 Java/Android