使用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实现Decorator模式实例代码
Feb 09 Python
python实现RabbitMQ的消息队列的示例代码
Nov 08 Python
Pyecharts绘制全球流向图的示例代码
Jan 08 Python
python烟花效果的代码实例
Feb 25 Python
PyTorch的torch.cat用法
Jun 28 Python
使用Nibabel库对nii格式图像的读写操作
Jul 01 Python
Python把图片转化为pdf代码实例
Jul 28 Python
Python 发送邮件方法总结
Aug 10 Python
关于Kotlin中SAM转换的那些事
Sep 15 Python
python对输出的奇数偶数排序实例代码
Dec 04 Python
python中time、datetime模块的使用
Dec 14 Python
利用python查看数组中的所有元素是否相同
Jan 08 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下关于中英数字混排的字符串分割问题
2010/04/06 PHP
php在多维数组中根据键名快速查询其父键以及父键值的代码
2011/05/07 PHP
PHP动态柱状图实现方法
2015/03/30 PHP
PHP判断来访是搜索引擎蜘蛛还是普通用户的代码小结
2015/09/14 PHP
jQuery帮助之筛选查找 children([expr])
2011/01/31 Javascript
DIV+CSS+JS不间断横向滚动实现代码
2013/03/19 Javascript
JavaScript中document对象使用详解
2015/01/06 Javascript
PHP配置文件php.ini中打开错误报告的设置方法
2015/01/09 PHP
js Canvas实现的日历时钟案例分享
2016/12/25 Javascript
JS实现随机颜色的3种方法与颜色格式的转化
2017/01/05 Javascript
js仿微博动态栏功能
2017/02/22 Javascript
微信小程序 ES6Promise.all批量上传文件实现代码
2017/04/14 Javascript
vue项目优化之通过keep-alive数据缓存的方法
2017/12/11 Javascript
微信小程序地图导航功能实现完整源代码附效果图(推荐)
2019/04/28 Javascript
使用layui的layer组件做弹出层的例子
2019/09/27 Javascript
JavaScript Reflect Metadata实现详解
2019/12/12 Javascript
vue 判断元素内容是否超过宽度的方式
2020/07/29 Javascript
[02:32]DOTA2英雄基础教程 祸乱之源
2013/12/23 DOTA
python实现在字符串中查找子字符串的方法
2015/07/11 Python
python中函数总结之装饰器闭包详解
2016/06/12 Python
Python面向对象编程中关于类和方法的学习笔记
2016/06/30 Python
python3新特性函数注释Function Annotations用法分析
2016/07/28 Python
python之文件的读写和文件目录以及文件夹的操作实现代码
2016/08/28 Python
Python3.6正式版新特性预览
2016/12/15 Python
Python 数据结构之堆栈实例代码
2017/01/22 Python
python读取文本中数据并转化为DataFrame的实例
2018/04/10 Python
python 分离文件名和路径以及分离文件名和后缀的方法
2018/10/21 Python
Python 将Matrix、Dict保存到文件的方法
2018/10/30 Python
物流仓管员工作职责
2014/01/06 职场文书
人事行政经理岗位职责
2014/06/18 职场文书
公司领导班子四风对照检查材料
2014/09/27 职场文书
2014年“向国旗敬礼”网上签名寄语活动方案
2014/09/27 职场文书
索赔员岗位职责
2015/02/15 职场文书
个人承诺书格式范文
2015/04/29 职场文书
三十年再续同学情倡议书
2019/11/27 职场文书
Windows Server 2019 域控制器安装图文教程
2022/04/28 Servers