每日一练:Python国内疫情数据爬取与地图绘制
Python 國內(nèi)疫情數(shù)據(jù)爬取與地圖繪制
- 效果圖
- 累計(jì)確診疫情地圖繪制
- ① 時(shí)時(shí)數(shù)據(jù)抓取
- ② 獲取省份疫情數(shù)據(jù)
- ③ 視覺配置項(xiàng)分段顏色數(shù)據(jù)設(shè)置
- ④ 累計(jì)確診疫情地圖繪制
- 現(xiàn)存確診疫情地圖繪制
- ① 獲取省份疫情數(shù)據(jù)
- ② 現(xiàn)存確診疫情地圖繪制
[ 系列文章篇 ]
Python 地圖篇 - 使用 pyecharts 繪制世界地圖、中國地圖、省級(jí)地圖、市級(jí)地圖實(shí)例詳解
效果圖
先給大家看下效果圖哈:
可以看剛和查詢的吉林累計(jì)確診疫情數(shù)據(jù)是一致的。
累計(jì)確診疫情地圖繪制
① 時(shí)時(shí)數(shù)據(jù)抓取
肺炎疫情的相關(guān)數(shù)據(jù)獲取請(qǐng)參考下面的文章:
[ 相關(guān)文章 ]
每日一練:Python 爬蟲爬取全國新冠肺炎疫情數(shù)據(jù)實(shí)例詳解,使用 beautifulsoup4 庫實(shí)現(xiàn)
省份的效果圖展示:
城市的效果圖展示:
② 獲取省份疫情數(shù)據(jù)
這里是根據(jù) json 字符串提取的省份疫情數(shù)組數(shù)據(jù)。
import jsondef get_provinces(json_content):"""xiaolanzao, 2022.04.27【作用】獲取省份疫情數(shù)據(jù)【參數(shù)】json_content : json字符串【返回】省份累計(jì)確診數(shù)組數(shù)據(jù)"""# 將字符串轉(zhuǎn)化為字典json_data = json.loads(json_content)data = []# 省份數(shù)據(jù)展示for i in json_data:# 省份名稱處理,和地圖對(duì)應(yīng)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:] == "自治區(qū)"):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("全國各省份疫情數(shù)據(jù)如下:")for i in data:print(i)return datadata = get_provinces(json_content)注意: 這里對(duì)原來的名稱進(jìn)行了處理,省份名稱和地圖對(duì)應(yīng)才能被識(shí)別到。
# 省份名稱處理,和地圖對(duì)應(yīng) 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:] == "自治區(qū)"):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]未處理前是這樣的:
處理后是這樣的:
③ 視覺配置項(xiàng)分段顏色數(shù)據(jù)設(shè)置
首先要設(shè)置個(gè)視覺配置項(xiàng)分段顯示的數(shù)據(jù),后面會(huì)根據(jù)數(shù)據(jù)在哪個(gè)分段顯示為哪種演示。
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'}, ] # 全局配置項(xiàng) .set_global_opts(# 設(shè)置標(biāo)題title_opts=opts.TitleOpts(title="中國疫情地圖"),# 設(shè)置視覺配置項(xiàng)分段顯示visualmap_opts=opts.VisualMapOpts(pieces=pieces,is_piecewise=True,is_show=True) )這是效果圖:
④ 累計(jì)確診疫情地圖繪制
這里就根據(jù)數(shù)據(jù)生成地圖了。
# -*- coding:utf-8 -*- # 2022-4-1 # 作者:小藍(lán)棗 # 疫情地圖# 需要引用的庫 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="累計(jì)確診", data_pair=data, maptype="china", # 是否默認(rèn)選中,默認(rèn)為Trueis_selected=True,# 是否啟用鼠標(biāo)滾輪縮放和拖動(dòng)平移,默認(rèn)為Trueis_roam=True,# 是否顯示圖形標(biāo)記,默認(rèn)為Trueis_map_symbol_show=False)# 系列配置項(xiàng)# 關(guān)閉標(biāo)簽名稱顯示.set_series_opts(label_opts=opts.LabelOpts(is_show=True))# 全局配置項(xiàng).set_global_opts(# 設(shè)置標(biāo)題title_opts=opts.TitleOpts(title="中國疫情地圖"),# 設(shè)置視覺配置項(xiàng)分段顯示visualmap_opts=opts.VisualMapOpts(pieces=pieces,is_piecewise=True,is_show=True))# 生成本地html文件.render("中國疫情地圖.html"))create_china_map()效果圖如下:
現(xiàn)存確診疫情地圖繪制
① 獲取省份疫情數(shù)據(jù)
這里和上面的區(qū)別就是由 data.append((province_name, i["confirmedCount"])) 換成了 data.append((province_name, i["currentConfirmedCount"]))
import jsondef get_provinces(json_content):"""xiaolanzao, 2022.04.27【作用】獲取省份疫情數(shù)據(jù)【參數(shù)】json_content : json字符串【返回】省份現(xiàn)存確診數(shù)組數(shù)據(jù)"""# 將字符串轉(zhuǎn)化為字典json_data = json.loads(json_content)data = []# 省份數(shù)據(jù)展示for i in json_data:# 省份名稱處理,和地圖對(duì)應(yīng)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:] == "自治區(qū)"):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("全國各省份疫情數(shù)據(jù)如下:")for i in data:print(i)return datadata = get_provinces(json_content)② 現(xiàn)存確診疫情地圖繪制
這里只是改變了下數(shù)據(jù)集名,由 series_name="累計(jì)確診" 變成了 series_name="現(xiàn)存確診"
# -*- coding:utf-8 -*- # 2022-4-1 # 作者:小藍(lán)棗 # 疫情地圖# 需要引用的庫 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="現(xiàn)存確診", data_pair=data, maptype="china", # 是否默認(rèn)選中,默認(rèn)為Trueis_selected=True,# 是否啟用鼠標(biāo)滾輪縮放和拖動(dòng)平移,默認(rèn)為Trueis_roam=True,# 是否顯示圖形標(biāo)記,默認(rèn)為Trueis_map_symbol_show=False)# 系列配置項(xiàng)# 關(guān)閉標(biāo)簽名稱顯示.set_series_opts(label_opts=opts.LabelOpts(is_show=True))# 全局配置項(xiàng).set_global_opts(# 設(shè)置標(biāo)題title_opts=opts.TitleOpts(title="中國疫情地圖"),# 設(shè)置視覺配置項(xiàng)分段顯示visualmap_opts=opts.VisualMapOpts(pieces=pieces,is_piecewise=True,is_show=True))# 生成本地html文件.render("中國疫情地圖.html"))create_china_map()效果圖如下:
喜歡的點(diǎn)個(gè)贊?吧!
總結(jié)
以上是生活随笔為你收集整理的每日一练:Python国内疫情数据爬取与地图绘制的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CSS3文本居中显示、圆形圆角绘制、立体
- 下一篇: 新版本Chrome同源策略、跨域问题处理