Python 国内疫情数据爬取与地图绘制
- 效果图
- 累计确诊疫情地图绘制
- ① 时时数据抓取
- ② 获取省份疫情数据
- ③ 视觉配置项分段颜色数据设置
- ④ 累计确诊疫情地图绘制
- 现存确诊疫情地图绘制
- ① 获取省份疫情数据
- ② 现存确诊疫情地图绘制
[ 系列文章篇 ]
Python 地图篇 - 使用 pyecharts 绘制世界地图、中国地图、省级地图、市级地图实例详解
效果图 【Python地图绘制|每日一练(Python国内疫情数据爬取与地图绘制)】先给大家看下效果图哈:
文章图片
可以看刚和查询的吉林累计确诊疫情数据是一致的。
文章图片
累计确诊疫情地图绘制 ① 时时数据抓取 肺炎疫情的相关数据获取请参考下面的文章:
[ 相关文章 ]
每日一练:Python 爬虫爬取全国新冠肺炎疫情数据实例详解,使用 beautifulsoup4 库实现
省份的效果图展示:
文章图片
城市的效果图展示:
文章图片
② 获取省份疫情数据 这里是根据 json 字符串提取的省份疫情数组数据。
import jsondef get_provinces(json_content):
"""
xiaolanzao, 2022.04.27
【作用】
获取省份疫情数据
【参数】
json_content : json字符串
【返回】
省份累计确诊数组数据
"""
# 将字符串转化为字典
json_data = json.loads(json_content)data = []# 省份数据展示
for i in json_data:
# 省份名称处理,和地图对应
province_name = i["provinceName"]
if(len(province_name)>1):
if(province_name[-1] == "省"):
province_name = province_name[:-1]
if(province_name[-1] == "市"):
province_name = province_name[:-1]
if(len(province_name)>3):
if(province_name[-3:] == "自治区"):
province_name = province_name[:-3]
if(len(province_name)>3):
if(province_name[-3:] == "维吾尔"):
province_name = province_name[:-3]
if(len(province_name)>2):
if(province_name[-2:] == "壮族"):
province_name = province_name[:-2]
if(province_name[-2:] == "回族"):
province_name = province_name[:-2]data.append((province_name, i["confirmedCount"]))print("全国各省份疫情数据如下:")
for i in data:
print(i)return datadata = https://www.it610.com/article/get_provinces(json_content)
注意: 这里对原来的名称进行了处理,省份名称和地图对应才能被识别到。
# 省份名称处理,和地图对应
province_name = i["provinceName"]
if(len(province_name)>1):
if(province_name[-1] == "省"):
province_name = province_name[:-1]
if(province_name[-1] == "市"):
province_name = province_name[:-1]
if(len(province_name)>3):
if(province_name[-3:] == "自治区"):
province_name = province_name[:-3]
if(len(province_name)>3):
if(province_name[-3:] == "维吾尔"):
province_name = province_name[:-3]
if(len(province_name)>2):
if(province_name[-2:] == "壮族"):
province_name = province_name[:-2]
if(province_name[-2:] == "回族"):
province_name = province_name[:-2]
未处理前是这样的:
文章图片
处理后是这样的:
文章图片
③ 视觉配置项分段颜色数据设置 首先要设置个视觉配置项分段显示的数据,后面会根据数据在哪个分段显示为哪种演示。
pieces = [
{'min': 10000, 'color': '#540d0d'},
{'max': 9999, 'min': 1000, 'color': '#9c1414'},
{'max': 999, 'min': 500, 'color': '#d92727'},
{'max': 499, 'min': 100, 'color': '#ed3232'},
{'max': 99, 'min': 10, 'color': '#f27777'},
{'max': 9, 'min': 1, 'color': '#f7adad'},
{'max': 0, 'color': '#f7e4e4'},
]
# 全局配置项
.set_global_opts(
# 设置标题
title_opts=opts.TitleOpts(title="中国疫情地图"),
# 设置视觉配置项分段显示
visualmap_opts=opts.VisualMapOpts(
pieces=pieces,
is_piecewise=True,
is_show=True
)
)
这是效果图:
文章图片
④ 累计确诊疫情地图绘制 这里就根据数据生成地图了。
# -*- coding:utf-8 -*-
# 2022-4-1
# 作者:小蓝枣
# 疫情地图# 需要引用的库
from pyecharts import options as opts
from pyecharts.charts import Mappieces = [
{'min': 10000, 'color': '#540d0d'},
{'max': 9999, 'min': 1000, 'color': '#9c1414'},
{'max': 999, 'min': 500, 'color': '#d92727'},
{'max': 499, 'min': 100, 'color': '#ed3232'},
{'max': 99, 'min': 10, 'color': '#f27777'},
{'max': 9, 'min': 1, 'color': '#f7adad'},
{'max': 0, 'color': '#f7e4e4'},
]def create_china_map():
'''
作用:生成中国疫情地图
'''
(
Map()
.add(
series_name="累计确诊",
data_pair=data,
maptype="china",
# 是否默认选中,默认为True
is_selected=True,
# 是否启用鼠标滚轮缩放和拖动平移,默认为True
is_roam=True,
# 是否显示图形标记,默认为True
is_map_symbol_show=False
)
# 系列配置项
# 关闭标签名称显示
.set_series_opts(label_opts=opts.LabelOpts(is_show=True))
# 全局配置项
.set_global_opts(
# 设置标题
title_opts=opts.TitleOpts(title="中国疫情地图"),
# 设置视觉配置项分段显示
visualmap_opts=opts.VisualMapOpts(
pieces=pieces,
is_piecewise=True,
is_show=True
)
)
# 生成本地html文件
.render("中国疫情地图.html")
)create_china_map()
效果图如下:
文章图片
现存确诊疫情地图绘制 ① 获取省份疫情数据 这里和上面的区别就是由
data.append((province_name, i["confirmedCount"]))
换成了 data.append((province_name, i["currentConfirmedCount"]))
import jsondef get_provinces(json_content):
"""
xiaolanzao, 2022.04.27
【作用】
获取省份疫情数据
【参数】
json_content : json字符串
【返回】
省份现存确诊数组数据
"""
# 将字符串转化为字典
json_data = json.loads(json_content)data = []# 省份数据展示
for i in json_data:
# 省份名称处理,和地图对应
province_name = i["provinceName"]
if(len(province_name)>1):
if(province_name[-1] == "省"):
province_name = province_name[:-1]
if(province_name[-1] == "市"):
province_name = province_name[:-1]
if(len(province_name)>3):
if(province_name[-3:] == "自治区"):
province_name = province_name[:-3]
if(len(province_name)>3):
if(province_name[-3:] == "维吾尔"):
province_name = province_name[:-3]
if(len(province_name)>2):
if(province_name[-2:] == "壮族"):
province_name = province_name[:-2]
if(province_name[-2:] == "回族"):
province_name = province_name[:-2]data.append((province_name, i["currentConfirmedCount"]))print("全国各省份疫情数据如下:")
for i in data:
print(i)return datadata = https://www.it610.com/article/get_provinces(json_content)
② 现存确诊疫情地图绘制 这里只是改变了下数据集名,由
series_name="累计确诊"
变成了 series_name="现存确诊"
# -*- coding:utf-8 -*-
# 2022-4-1
# 作者:小蓝枣
# 疫情地图# 需要引用的库
from pyecharts import options as opts
from pyecharts.charts import Mappieces = [
{'min': 10000, 'color': '#540d0d'},
{'max': 9999, 'min': 1000, 'color': '#9c1414'},
{'max': 999, 'min': 500, 'color': '#d92727'},
{'max': 499, 'min': 100, 'color': '#ed3232'},
{'max': 99, 'min': 10, 'color': '#f27777'},
{'max': 9, 'min': 1, 'color': '#f7adad'},
{'max': 0, 'color': '#f7e4e4'},
]def create_china_map():
'''
作用:生成中国疫情地图
'''
(
Map()
.add(
series_name="现存确诊",
data_pair=data,
maptype="china",
# 是否默认选中,默认为True
is_selected=True,
# 是否启用鼠标滚轮缩放和拖动平移,默认为True
is_roam=True,
# 是否显示图形标记,默认为True
is_map_symbol_show=False
)
# 系列配置项
# 关闭标签名称显示
.set_series_opts(label_opts=opts.LabelOpts(is_show=True))
# 全局配置项
.set_global_opts(
# 设置标题
title_opts=opts.TitleOpts(title="中国疫情地图"),
# 设置视觉配置项分段显示
visualmap_opts=opts.VisualMapOpts(
pieces=pieces,
is_piecewise=True,
is_show=True
)
)
# 生成本地html文件
.render("中国疫情地图.html")
)create_china_map()
效果图如下:
文章图片
喜欢的点个赞?吧!
推荐阅读
- python|Python爬取网易云音乐网易云音乐歌手歌曲和歌单,并下载到本地
- python爬虫(四)---scrapy框架之腾讯招聘项目实战
- Python爬虫|逆向系列 | AES逆向加密案例分析
- python爬虫|关于使用python 动态爬虫Selenium 下载文件,文件类型的设置
- 教你如何使用Python破解WIFI密码
- python爬虫|【python爬虫教程】请求模块urllib的基本使用
- python爬虫|爬虫基础知识(web前端,请求模块urllib,重构user_agent)
- 尚硅谷|Python爬虫 urllib -- 爬虫的相关概念介绍、urllib库的基本使用、urllib(1个类型和6个方法)
- Python|玩游戏怎么能没有皮肤,Python一键采集王某耀游戏所有皮肤,这波就很舒服