每日一练:Python国内疫情数据爬取与地图绘制
生活随笔
收集整理的這篇文章主要介紹了
每日一练:Python国内疫情数据爬取与地图绘制
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Python 國內疫情數據爬取與地圖繪制
- 效果圖
- 累計確診疫情地圖繪制
- ① 時時數據抓取
- ② 獲取省份疫情數據
- ③ 視覺配置項分段顏色數據設置
- ④ 累計確診疫情地圖繪制
- 現存確診疫情地圖繪制
- ① 獲取省份疫情數據
- ② 現存確診疫情地圖繪制
[ 系列文章篇 ]
Python 地圖篇 - 使用 pyecharts 繪制世界地圖、中國地圖、省級地圖、市級地圖實例詳解
效果圖
先給大家看下效果圖哈:
可以看剛和查詢的吉林累計確診疫情數據是一致的。
累計確診疫情地圖繪制
① 時時數據抓取
肺炎疫情的相關數據獲取請參考下面的文章:
[ 相關文章 ]
每日一練: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 = 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", # 是否默認選中,默認為Trueis_selected=True,# 是否啟用鼠標滾輪縮放和拖動平移,默認為Trueis_roam=True,# 是否顯示圖形標記,默認為Trueis_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 = 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", # 是否默認選中,默認為Trueis_selected=True,# 是否啟用鼠標滾輪縮放和拖動平移,默認為Trueis_roam=True,# 是否顯示圖形標記,默認為Trueis_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国内疫情数据爬取与地图绘制的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CSS3文本居中显示、圆形圆角绘制、立体
- 下一篇: 新版本Chrome同源策略、跨域问题处理