帶大家用40行python代碼實現一個疫情地圖


最近兩個月,因為新冠病毒無情的肆虐,相信會給每個中國人的記憶中畫上重重的一筆。到今天為止,疫情形勢依然十分嚴峻,雖然除湖北外的其他省份已經連續十一天確診人數下降,但是接下來還有將近至少1.6億的人口遷徙,這無疑還存在一定的風險。

相信很多人和我一樣,早上起床的第一件事情都是查看疫情數據,一般的數據都配有中國確診人數的地圖,之前看到csdn推過一篇文章,有同學用python實現疫情地圖,我覺得挺有意思的,於是就嘗試自己動手也寫一個,主要用到如下的庫:

- 網絡請求:requests
- 繪制圖表的庫:pyecharts	

獲取疫情數據

在騰訊新聞和支付寶中,都能看到疫情數據,但是獲取支付寶的數據難度相對大一些,所以決定從騰訊新聞的數據入手,首先在chrome中打開鏈接:https://news.qq.com//zt2020/page/feiyan.htm,然后通過chrome開發者工具(F12)過濾對應的XHR接口(XHR格式的接口,是ajax異步請求網絡數據的接口,一般定義的接口可通過XHR過濾),如下圖:

1x5cdA.png

通過查看圖中所有的接口,是獲取各個省份醫院數量、根據省份名稱查詢每日新增確診人數的數據,並沒有我們需要的全國各個省份確診人數的數據。我們再切換到chrome開發者工具的console來看看開發是否有打印對應的數據,bingo!果然找到了比較有用的信息:

1xIT1K.png

我們看上圖兩個關鍵信息,一個是紅框內的url,另一個是打印的全部數據,我們從其中找到了我們需要的全國各個省份的確診總數量。數據源確定了,接下來就是使用requests庫請求數據,並且將上圖areaTree下面的children中的數據取出來:

1xj1bV.png

上面的代碼需要注意一點,就是requests.get(data_url).json()["data"]返回的是字符串,需要將其轉成json,才能從中將值取出來。現在數據有了,萬事俱備,只欠東風!接下來我們開始繪制中國地圖。

繪制地圖

python中進行圖表繪制的庫主要有兩個:matplotlibpyecharts, 相比較而言:

  • matplotlib中提供了BaseMap可以用於地圖的繪制,但是個人覺得其繪制的地圖不太美觀,另外一個重要的原因,其安裝有點麻煩,可能存在兼容性問題。
  • pyecharts是基於百度開源的js庫echarts而來,其最大的特點是:簡單,安裝簡單、使用也簡單。

所以最終決定用pyecharts來繪制地圖,其核心代碼如下:

1xjtC4.png

在pyecharts的官方文檔(https://pyecharts.org/#/zh-cn/)中詳細的列出了繪制各種圖表的方法及參數的含義,最重要的,文檔中提供了各種可供參考的demo,方便我們更快的實現功能。

到這里所有的代碼都實現完成了,數了下,除掉注釋,總共40行代碼,是不是很簡單,是不是很強大!上個我們實現的效果圖:

1xLoaF.png

留給你去實現的功能

想要掌握一個知識點,最好的方法就是去實踐,這里給大家留兩個小小的需求:

  • 實現一個折線圖,展示中國除湖北外每日新增確診人數變化趨勢圖。
  • 實現一個你所在城市,每天新增確診人數變化的柱狀圖。

如果你完成了,可以將圖片貼出來,大家一起分享交流下。可以將圖片貼到知識星球相應的討論主題(https://t.zsxq.com/Fuj2fY3),微信公眾號回復消息貌似沒辦法回復圖片。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM