设为首页|收藏本站|
开启左侧

[闲聊] 疫情数据的可视化:中国疫情地图的制作

[复制链接]
62637 1
bingjilongqi 发表于 2021-12-3 12:37:31 | 只看该作者 打印 上一主题 下一主题
 
昨日给大家分享了百度疫情数据的爬虫程序,今天我们聊聊疫情数据的可视化问题。相信大家在百度、腾讯、网易、今日头条等平台的疫情实时追踪版块都会看到一张中国疫情图,点击相应的省份就可以看到病例数。那么,这种疫情的动态地图是怎么制作的呢?我们其实可以基于Python的pyecharts库去实现,使用之前记得要安装(pip install pyecharts)。

疫情数据的可视化:中国疫情地图的制作 第1张图片
我们首先从网易新闻疫情数据版块把今天各省的累计确诊病例数爬取下来(https://wp.m.163.com/163/page/news/virus_report/index.html?_nw_=1&_anw_=1),浏览器抓包之后就会发现数据格式也是json数据(对于动态加载页面,数据格式一般都是json)。我们将省份名称和确证病例数分别存放在province_list和total_list两个列表中,然后就可以开始疫情地图的制作了!
import requests
import json
import jsonpath
import time
from pyecharts.charts import Map
from pyecharts import options

# 网易疫情数据https://wp.m.163.com/163/page/news/virus_report/index.html?_nw_=1&_anw_=1
url = 'https://c.m.163.com/ug/api/wuhan/app/data/list-total?t=318114165398'

headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36 Edg/83.0.478.37',
}

response = requests.get(url,headers=headers).text

datas = json.loads(response)#json字符串转为字典

china_datas = datas['data']['areaTree'][2]
province_list = []
total_list = []
for data in china_datas['children']:
    province = data['name']
    province_list.append(province)
    total = data['total']['confirm']
    total_list.append(total)Echarts是百度开源的数据可视化库,pyecharts就是Python和Echarts的有机结合。pyecharts库的使用有一个中文官方文档(网址https://pyecharts.org/#/zh-cn/intro),官网上介绍了pyecharts的使用方法、参数设定,还提供了一些图表作为示范案例,以供大家去学习和参考!

疫情数据的可视化:中国疫情地图的制作 第2张图片

疫情数据的可视化:中国疫情地图的制作 第3张图片
我们要制作的疫情动态地图就是一个分段型的中国地图,所以,我们就可以模仿分段型地图的代码去进行制作,width和height是我们要制作的地图的宽度和高度,list(z) for z in zip(province_list,total_list)是将省份名称和累计确诊列表传入地图中,maptype="china"表示是中国地图(除此之外,世界地图、省份地图、城市地图都是可以调用的),pieces是我们分的段,对于每一段我们都设置了不同的颜色加以区分。
# 可视化 pyecharts
map = Map(options.InitOpts(width='1500px',height='700px')).add("中国疫情动态地图",
          [list(z) for z in zip(province_list,total_list)],
          maptype="china",is_map_symbol_show=False)

# 不显示省份名称
map.set_series_opts(label_opts=options.LabelOpts(is_show=False))

# 设置全局配置项 图例
map.set_global_opts(title_opts=options.TitleOpts(title="中国疫情动态地图"),
                    visualmap_opts=options.VisualMapOpts(split_number=5,is_piecewise=True,
                                                         pieces=[{"min":0,"max":50,"label":"0-50人","color":"#ffefd7"},
                                                                 {"min":51,"max":200,"label":"51-200人","color":"#fe8664"},
                                                                 {"min":201,"max":1000,"label":"201-1000人","color":"#e64b47"},
                                                                 {"min":1001,"max":10000,"label":"1001-10000人","color":"#c91014"},
                                                                 {"min":10001,"label":"10000人以上","color":"#9c0a0d"}]))
map.render(r'D:\爬虫下载\中国疫情动态地图.html')当然,更多的参数还需要大家自己去学习和探索!下图就是我制作的中国疫情动态地图,鼠标点击到每个省份就可以看到这个省份的累计确诊病例数。因为制作出来的动态地图是网页html格式的,所以分享起来比较麻烦!需要这份疫情动态地图的朋友,请在公众号后台回复“地图”。(备注:大家拿到的是一个txt文本文件,请把后缀名.txt改为.html,然后打开就可以了)

疫情数据的可视化:中国疫情地图的制作 第4张图片


上一篇:基于新冠疫情数据的分析与建模
下一篇:2020肺炎疫情舆情数据分析报告汇总
@



1.西兔生活网 CTLIVES 内容全部来自网络;
2.版权归原网站或原作者所有;
3.内容与本站立场无关;
4.若涉及侵权或有疑义,请点击“举报”按钮,其他联系方式或无法及时处理。
 

精彩评论1

正序浏览
跳转到指定楼层
沙发
HP2820038 发表于 2021-12-3 12:37:39 | 只看该作者
 
地图
回复 支持 反对

使用道具 举报

 
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

排行榜
活跃网友
返回顶部快速回复上一主题下一主题返回列表APP下载手机访问
Copyright © 2016-2028 CTLIVES.COM All Rights Reserved.  西兔生活网  小黑屋| GMT+8, 2024-5-10 09:54