日韩性视频-久久久蜜桃-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绘制中国新型冠状病毒疫情图(国家和省)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 国产精品久久久久桃色tv | 中文字幕日韩一区二区三区 | 久草日韩| 欧美人禽杂交狂配 | 青青操久久 | 可以免费看的黄色 | 老妇高潮潮喷到猛进猛出 | 精品久久久无码中文字幕边打电话 | 久草福利视频 | 日韩少妇裸体做爰视频 | 欧美日韩啪啪 | 日韩爽片 | 国产精品毛片一区视频播 | 久久精品视频网站 | 中国在线观看视频高清免费 | 欧美一区综合 | 色婷婷综合久久久久中文字幕 | 成人av免费在线看 | 97久久久久久久久久 | jizzzz中国 | 色视频网站在线观看 | 波多野结衣mp4 | 国产精品一区二区三区高潮 | 真实偷拍激情啪啪对白 | 伊人久艹 | 日韩中文在线播放 | 精品久久一区 | 精品熟妇无码av免费久久 | 激情精品 | 91精品国产自产在线观看 | 99reav| 日本wwwxx| 国产超碰人人模人人爽人人添 | 99re视频 | 日本一区电影 | 国产婷婷在线视频 | 亚洲一区二区三区午夜 | 国产香蕉9 | 可以免费看的黄色网址 | 亚洲精品女人 | 法国伦理少妇愉情 | 免费观看黄色的网站 | 女人18片毛片60分钟 | 最近免费中文字幕 | 成人精品国产免费网站 | 毛片网 | 免费精品在线视频 | 欧美一区二区在线视频观看 | 在线观看国产成人 | 国产精品一区二区av白丝下载 | 精品人妻无码中文字幕18禁 | 韩国美女一区二区 | 日本黄色录像片 | 国产精品自拍99 | 99riav3国产精品视频 | 国产中文在线观看 | 韩国成人免费视频 | 成人污视频 | 美女视频黄色 | 狂野欧美性猛交xxxx | 中文字幕在线资源 | 午夜激情男女 | 亚洲午夜精选 | 国产熟妇搡bbbb搡bbbb | 抽插丰满内射高潮视频 | 国产在线视频资源 | 国产美女精品 | 一区免费| 最新91在线 | 欧美黑人性猛交xxxx | 成人激情开心网 | 中文字幕视频观看 | 在线观看国产一区二区三区 | 99久国产| 九九国产精品视频 | 致单身男女免费观看完整版 | 四虎成人网 | 四虎久久久 | 色原网| 黄色小毛片 | 国内激情自拍 | 美女高潮在线 | 五月婷婷开心中文字幕 | 欧美无人区码suv | 呦呦视频在线观看 | 日本五十熟hd丰满 | 韩国伦理电影免费在线 | 樱花草av| 综合中文字幕 | 91视频最新地址 | 日韩色 | 国产中文字幕网 | 成年人黄色免费网站 | 涩涩屋视频 | 欧美jizz18性欧美 | 黄频在线播放 | 亚洲女人在线 | 国产午夜一区二区 | 97日韩精品 |