日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

利用Python绘制中国新型冠状病毒疫情图(国家和省)

發布時間:2023/12/15 python 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 利用Python绘制中国新型冠状病毒疫情图(国家和省) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

大數據課程設計上來就要求繪制一個地圖可以反應出來中國各個省份每日疫情的人數,包括確診,疑似,死亡,治愈。如下圖所示:

這里用到了Python中的pyecharts庫,點此了解詳細信息
1.先來將需要的模塊導入進來

import requests import json import re from pyecharts.charts import Map from pyecharts import options

如果事先沒有安裝這些庫,需要導入這些庫

pip3 install requestspip3 install jsonpip3 install repip3 install pyecharts

除此之外,還需要導入中國地圖以及各個省份的地圖

依次是全球地圖、中國省級地圖、中國市級地圖、中國區縣級地圖、中國區域地圖根據需要地圖導入pip3 install echarts-countries-pypkgpip3 install echarts-china-provinces-pypkgpip3 install echarts-china-cities-pypkgpip3 install echarts-china-counties-pypkgpip3 install echarts-china-misc-pypkg

2.獲取數據-處理數據;利用網絡爬蟲爬取新浪微博上面的數據

#發起網絡請求,獲取數據 result = requests.get('https://interface.sina.cn/news/wap/fymap2020_data.d.json?1580097300739&&callback=sinajp_1580097300873005379567841634181') #使用正則表達式處理數據 json_str = re.search("\(+([^)]*)\)+", result.text).group(1) html = f"{json_str}" table = json.loads(f"{html}")

爬取的數據如圖所示:

3.進行地圖的生成,代碼如下:
依次是確診,死亡,治愈,疑似。其中疑似的數據爬取的好像不是很對,總人數是正確的,但是各個省份的人數不對,湖北是0。。。采用比較丑的堆疊代碼形式,想簡化一點可以采用函數形式。

# -*- coding: utf-8 -*- # -*- coding: utf-8 -*- """ Created on Wed Feb 19 11:11:45 2020@author: lenovo """import requests import json import re from pyecharts.charts import Map from pyecharts import options#發起網絡請求,獲取數據 result = requests.get('https://interface.sina.cn/news/wap/fymap2020_data.d.json?1580097300739&&callback=sinajp_1580097300873005379567841634181') #使用正則表達式處理數據 json_str = re.search("\(+([^)]*)\)+", result.text).group(1) html = f"{json_str}" table = json.loads(f"{html}")province_data = []#循環獲取省份名稱和對應的確診數據 for province in table['data']['list']:#將省份數據添加到列表中去province_data.append((province['name'], province['value']))city_data = []#循環獲取城市名稱和對應的確診數據for city in province['city']:#這里要注意對應上地圖的名字需要使用mapName這個字段city_data.append((city['mapName'], city['conNum'])) #創建國家地圖 map_country = Map() #設置地圖上的標題和數據標記,添加確診人數 map_country.set_global_opts(title_opts=options.TitleOpts(title="中國實時疫情圖-確診人數:%d"%(table['data']["gntotal"])), visualmap_opts=options.VisualMapOpts(is_piecewise=True,#設置是否為分段顯示pieces=[{"min": 1000, "label": '>1000人', "color": "#6F171F"}, # 不指定 max,表示 max 為無限大(Infinity)。{"min": 500, "max": 1000, "label": '500-1000人', "color": "#C92C34"},{"min": 100, "max": 499, "label": '100-499人', "color": "#E35B52"},{"min": 10, "max": 99, "label": '10-99人', "color": "#F39E86"},{"min": 1, "max": 9, "label": '1-9人', "color": "#FDEBD0"}])) #將數據添加進去,生成中國地圖,所以maptype要對應china。 map_country.add("確診", province_data, maptype="china") #一切完成,那么生成一個html網頁文件。 map_country.render("country確診.html") print("中國實時疫情圖生成完成!!!")province_data = []#循環獲取省份名稱和對應的確診數據 for province in table['data']['list']:#將省份數據添加到列表中去province_data.append((province['name'], province['deathNum']))city_data = []#循環獲取城市名稱和對應的確診數據for city in province['city']:#這里要注意對應上地圖的名字需要使用mapName這個字段city_data.append((city['mapName'], city['conNum'])) #創建國家地圖 map_country = Map() #設置地圖上的標題和數據標記,添加確診人數 map_country.set_global_opts(title_opts=options.TitleOpts(title="中國實時疫情圖-死亡人數:%d"%(table['data']["deathtotal"])), visualmap_opts=options.VisualMapOpts(is_piecewise=True,#設置是否為分段顯示pieces=[{"min": 1000, "label": '>1000人', "color": "#6F171F"}, # 不指定 max,表示 max 為無限大(Infinity)。{"min": 500, "max": 1000, "label": '500-1000人', "color": "#C92C34"},{"min": 100, "max": 499, "label": '100-499人', "color": "#E35B52"},{"min": 10, "max": 99, "label": '10-99人', "color": "#F39E86"},{"min": 1, "max": 9, "label": '1-9人', "color": "#FDEBD0"}])) #將數據添加進去,生成中國地圖,所以maptype要對應china。 map_country.add("死亡", province_data, maptype="china") #一切完成,那么生成一個html網頁文件。 map_country.render("country死亡.html") print("中國實時疫情圖生成完成!!!")province_data = []#循環獲取省份名稱和對應的確診數據 for province in table['data']['list']:#將省份數據添加到列表中去province_data.append((province['name'], province['cureNum']))city_data = []#循環獲取城市名稱和對應的確診數據for city in province['city']:#這里要注意對應上地圖的名字需要使用mapName這個字段city_data.append((city['mapName'], city['conNum'])) #創建國家地圖 map_country = Map() #設置地圖上的標題和數據標記,添加確診人數 map_country.set_global_opts(title_opts=options.TitleOpts(title="中國實時疫情圖-治愈人數:%d"%(table['data']["curetotal"])), visualmap_opts=options.VisualMapOpts(is_piecewise=True,#設置是否為分段顯示pieces=[{"min": 1000, "label": '>1000人', "color": "#6F171F"}, # 不指定 max,表示 max 為無限大(Infinity)。{"min": 500, "max": 1000, "label": '500-1000人', "color": "#C92C34"},{"min": 100, "max": 499, "label": '100-499人', "color": "#E35B52"},{"min": 10, "max": 99, "label": '10-99人', "color": "#F39E86"},{"min": 1, "max": 9, "label": '1-9人', "color": "#FDEBD0"}])) #將數據添加進去,生成中國地圖,所以maptype要對應china。 map_country.add("治愈", province_data, maptype="china") #一切完成,那么生成一個html網頁文件。 map_country.render("country治愈.html") print("中國實時疫情圖生成完成!!!")province_data = []#循環獲取省份名稱和對應的確診數據 for province in table['data']['list']:#將省份數據添加到列表中去province_data.append((province['name'], province['susNum']))city_data = []#循環獲取城市名稱和對應的確診數據for city in province['city']:#這里要注意對應上地圖的名字需要使用mapName這個字段city_data.append((city['mapName'], city['conNum'])) #創建國家地圖 map_country = Map() #設置地圖上的標題和數據標記,添加確診人數 map_country.set_global_opts(title_opts=options.TitleOpts(title="中國實時疫情圖-疑似人數:%d"%(table['data']["sustotal"])), visualmap_opts=options.VisualMapOpts(is_piecewise=True,#設置是否為分段顯示pieces=[{"min": 1000, "label": '>1000人', "color": "#6F171F"}, # 不指定 max,表示 max 為無限大(Infinity)。{"min": 500, "max": 1000, "label": '500-1000人', "color": "#C92C34"},{"min": 100, "max": 499, "label": '100-499人', "color": "#E35B52"},{"min": 10, "max": 99, "label": '10-99人', "color": "#F39E86"},{"min": 1, "max": 9, "label": '1-9人', "color": "#FDEBD0"}])) #將數據添加進去,生成中國地圖,所以maptype要對應china。 map_country.add("疑似", province_data, maptype="china") #一切完成,那么生成一個html網頁文件。 map_country.render("country疑似.html") print("中國實時疫情圖生成完成!!!")

這是中國每天的疫情圖,如果想看省份的,代碼如下:
這只是治愈的,如果想看別的,可以根據上面全國的改動一些地方就行了。

# -*- coding: utf-8 -*- """ Created on Thu Feb 20 16:45:13 2020@author: lenovo """ import requests import json import re from pyecharts.charts import Map from pyecharts import options#發起網絡請求,獲取數據 result = requests.get('https://interface.sina.cn/news/wap/fymap2020_data.d.json?1580097300739&&callback=sinajp_1580097300873005379567841634181') #使用正則表達式處理數據 json_str = re.search("\(+([^)]*)\)+", result.text).group(1) html = f"{json_str}" table = json.loads(f"{html}")province_data = []#循環獲取省份名稱和對應的確診數據 for province in table['data']['list']:#將省份數據添加到列表中去province_data.append((province['name'], province['cureNum']))city_data = []#循環獲取城市名稱和對應的確診數據for city in province['city']:#這里要注意對應上地圖的名字需要使用mapName這個字段city_data.append((city['mapName'], city['conNum'])) #使用Map,創建省份地圖 map_province = Map()#設置地圖上的標題和數據標記,添加省份和確診人數map_province.set_global_opts(title_opts=options.TitleOpts(title=province['name'] + "實時疫情圖-治愈人數:" +province['cureNum']), visualmap_opts=options.VisualMapOpts(is_piecewise=True,#設置是否為分段顯示pieces=[{"min": 1000, "label": '>1000人', "color": "#6F171F"}, {"min": 500, "max": 1000, "label": '500-1000人', "color": "#C92C34"},{"min": 100, "max": 499, "label": '100-499人', "color": "#E35B52"},{"min": 10, "max": 99, "label": '10-99人', "color": "#F39E86"},{"min": 1, "max": 9, "label": '1-9人', "color": "#FDEBD0"}]))#將數據添加進去,生成省份地圖,所以maptype要對應省份。map_province.add("治愈", city_data, maptype = province['name'])#一切完成,那么生成一個省份的html網頁文件,取上對應省份的名字。map_province.render(province['name'] + ".html") print("各個省份地圖生成完成")

部分代碼解釋:
(1)將省份數據添加到列表中去

province_data.append((province['name'], province['value'])) #將數據中對應的值取出來添加到province_data中。

(2)

title_opts=options.TitleOpts(title="A")

A是生成地圖中的紅色框框部分。

(3)

pieces=[{"min": 1000, "label": '>1000人', "color": "#6F171F"}, {"min": 500, "max": 1000, "label": '500-1000人', "color": "#C92C34"},{"min": 100, "max": 499, "label": '100-499人', "color": "#E35B52"},{"min": 10, "max": 99, "label": '10-99人', "color": "#F39E86"},{"min": 1, "max": 9, "label": '1-9人', "color": "#FDEBD0"}]))is_piecewise=True,#設置是否為分段顯示,然后通過 pieces來設置。

(4)將數據添加進去,生成中國地圖,所以maptype要對應china。

map_country.add("確診", province_data, maptype="china")

(5)一切完成,那么生成一個html網頁文件。

map_country.render("country.html")

可能會有一些不對的地方,希望大家借鑒著看。還有那個疑似數據如果我有哪個地方弄的不對,希望路過的大佬指正。
希望有一天運行出來的結果,除了治愈的之外,剩下的都全是白色的。這一天一定會到來的!!!中國加油!
參考網址:https://zhuanlan.zhihu.com/p/105072241
努力加油a啊,(o)/~

總結

以上是生活随笔為你收集整理的利用Python绘制中国新型冠状病毒疫情图(国家和省)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 91视频亚洲 | www九九九 | 黑人极品ⅴideos精品欧美棵 | 特黄三级又爽又粗又大 | 全黄一级男人和女人 | 欧美无马 | 在线国产一区二区 | 欧美精品动漫 | 午夜视频一区二区三区 | 在线99 | 日本成人三级电影 | 国模私拍av | 国产日韩在线一区 | 成年人免费毛片 | 日韩精品一区二区三区久久 | 性一级视频 | 国产人与zoxxxx另类 | 超碰在线免费观看97 | 亚洲日本va中文字幕 | 美女100%视频免费观看 | 天天射网 | 诱夫1v1高h | 婷婷黄色网 | 国产精品网站在线观看 | 久久羞羞 | 日韩一区二区av | 色吟av | 女性女同性aⅴ免费观女性恋 | 亚洲精品一区二区三区中文字幕 | 国产成人精品999在线观看 | 欧美高清v | 国产精品永久久久久久久久久 | 国产高中女学生第一次 | 美女扒开腿免费视频 | 色多多网站 | 成年人黄国产 | 国产精品高清在线观看 | 黄色理论片| av电影在线网站 | 91操视频| 午夜免费福利网站 | 亚洲一区二区综合 | 已满18岁免费观看电视连续剧 | 日韩成人一区二区 | 你懂的在线观看网站 | 久久精品亚洲a | 青娱乐导航 | 国产一区二区视频在线 | 黑人操日本女人 | 丁香六月综合激情 | 中文字幕日韩电影 | www.激情| 国产精品中文在线 | 成人小视频免费 | 色婷婷av一区二区三区四区 | 亚洲春色在线观看 | 都市激情自拍 | 色综合久久88色综合天天免费 | 日本在线免费 | 午夜性影院 | 人妻精品久久久久中文 | 爱爱91 | 性户外野战hd | 日本黄色三级视频 | 欧美精品乱码视频一二专区 | 日本成人一区二区三区 | 欧美另类xxx| 懂色av成人一区二区三区 | 亚洲综合成人亚洲 | 欧美 国产 综合 | 国产成人无码专区 | 亚洲性欧美| 国产一二三区在线 | 91玖玖| 成年人网站免费视频 | 四虎影院在线 | 国产在线观看无码免费视频 | 亚洲最大激情网 | 美国做爰xxxⅹ性视频 | 秋霞黄色网| 美女av免费观看 | 性xxx法国hd极品 | 日韩美女在线 | 91黄在线看 | 自拍偷拍福利视频 | 国产一级爱c视频 | 99中文字幕 | 肉丝超薄少妇一区二区三区 | 最新色视频| 日韩欧美在线观看免费 | 成人特级毛片 | 久久嫩草精品久久久久 | 日韩一区二区在线免费观看 | 超碰人人做 | 国产人成无码视频在线观看 | 亚洲第一视频在线观看 | 偷自拍| 乌克兰性极品xxxhd | 午夜在线观看视频网站 |