Python地图绘制|每日一练(Python国内疫情数据爬取与地图绘制)


Python 国内疫情数据爬取与地图绘制

  • 效果图
  • 累计确诊疫情地图绘制
  • ① 时时数据抓取
  • ② 获取省份疫情数据
  • ③ 视觉配置项分段颜色数据设置
  • ④ 累计确诊疫情地图绘制
  • 现存确诊疫情地图绘制
  • ① 获取省份疫情数据
  • ② 现存确诊疫情地图绘制

[ 系列文章篇 ]
Python 地图篇 - 使用 pyecharts 绘制世界地图、中国地图、省级地图、市级地图实例详解

效果图 【Python地图绘制|每日一练(Python国内疫情数据爬取与地图绘制)】先给大家看下效果图哈:
Python地图绘制|每日一练(Python国内疫情数据爬取与地图绘制)
文章图片

可以看刚和查询的吉林累计确诊疫情数据是一致的。
Python地图绘制|每日一练(Python国内疫情数据爬取与地图绘制)
文章图片

累计确诊疫情地图绘制 ① 时时数据抓取 肺炎疫情的相关数据获取请参考下面的文章:
[ 相关文章 ]
每日一练:Python 爬虫爬取全国新冠肺炎疫情数据实例详解,使用 beautifulsoup4 库实现

省份的效果图展示:
Python地图绘制|每日一练(Python国内疫情数据爬取与地图绘制)
文章图片

城市的效果图展示:
Python地图绘制|每日一练(Python国内疫情数据爬取与地图绘制)
文章图片

② 获取省份疫情数据 这里是根据 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]

未处理前是这样的:
Python地图绘制|每日一练(Python国内疫情数据爬取与地图绘制)
文章图片

处理后是这样的:
Python地图绘制|每日一练(Python国内疫情数据爬取与地图绘制)
文章图片

③ 视觉配置项分段颜色数据设置 首先要设置个视觉配置项分段显示的数据,后面会根据数据在哪个分段显示为哪种演示。
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 ) )

这是效果图:
Python地图绘制|每日一练(Python国内疫情数据爬取与地图绘制)
文章图片

④ 累计确诊疫情地图绘制 这里就根据数据生成地图了。
# -*- 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国内疫情数据爬取与地图绘制)
文章图片

现存确诊疫情地图绘制 ① 获取省份疫情数据 这里和上面的区别就是由 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国内疫情数据爬取与地图绘制)
文章图片

喜欢的点个赞?吧!

    推荐阅读