Python繪製世界地圖,塗個顏色放個國家 這都不是事兒
一個程序員的一天(文章末尾有大量表情包)
GIF
為什麼是Python
先來聊聊為什麼做數據分析一定要用Python或R語言。編程語言這麼多種,Java, PHP都很成熟,但是為什麼在最近熱火的數據分析領域,很多人選擇用Python語言?
數據分析只是一個需求,理論上來講,任何語言都可以滿足任何需求,只是麻煩與簡易之別。Python這門語言誕生也相當之早,它的第一個版本是26年前發表的,曾經(或者說當前)也被用於web開發,但是就流行程度來說,遠遠干不過Java和PHP。東方不亮西方亮,在與Java干仗失敗的這20幾年時光里,Python練就了一身獨門武藝,是Java和PHP遠遠不及的(當然以後是不是能追得上來,目前還不好說)。你要說做個博客網站,Python的特長不在這裡,PHP和Java也是分分鐘的事情。你要說做個BBS網站,做個電商網站,PHP手到擒來。Python在這些方面和Java或者PHP競爭,基本就是作死的節奏,雖然也有django這樣的框架,但流行程度遠遠不及其他語言。但在這些年默默的失敗背後,有一幫研究人員用Python干出了一些驚天地泣鬼神的神器,使Python在數據研究領域做到了除了R語言以外基本無人能及的地步。
首先:我們需要安裝Jupyter和Python,其次我們需要安裝一個關鍵的模塊Basemap,這個模塊不同於我們平常的模塊,通過pip install Basemap,這會報錯
我們需要進入:https://www.lfd.uci.edu/~gohlke/pythonlibs/,進行下載,點進網址後摁下ctrl+F然後輸入Basemap,你就會找到需要的模塊進行下載
好一切準備完成後,我們先來畫一個世界地圖
代碼如下
代碼一開始的兩行是為了導入模塊~實際上的代碼只有四行,plt.figure(figsize=(16,8))是定義了畫布的大小,這一行你也可以不寫,第2行我們創建一個地圖,第3行把海岸線畫上,第4行顯示這個地圖,就是這樣是不是很簡單,然後我們用一行代碼把國家畫出來,m.drawcountries(linewidth=1.5)
此時此刻,正在敲代碼的我
GIF
但是我們今天需要的是我們祖國的地圖~那麼就有需要用basemap來確定經緯度,
就會顯示出這個圖
當然你要是想畫出省的邊界那就需要從這裡:http://www.gadm.org/country,下載行政區規劃shape文件,這裡小編就不多解釋了直接貼上一行源碼m.readshapefile("CHN_adm_shp/CHN_adm1", "states", drawbounds=True),然後就會有這樣的效果,
接下來就是在地圖上弄顏色了,總不可能讓一直是這樣白白的吧~
好接下來我們添加這五行代碼
第2行的plt.gca函數名看上去很詭異,這是因為Python里使用了大量的縮寫,這個gca就是一個縮寫(可以自行百度),實際上就是要獲得當前圖形的座標軸。然後我們開始一個循環,把圖形文件中各個省的多邊形取出來,給它一個顏色,在這裡我們統一放上紅色,也就是這個facecolor="r",然後把這個多邊形放在我們圖座標軸座標軸上,然後就得到了下圖
細心的人會看到我畫的紅色框~這個框是我們的台灣~但是沒有被上顏色,那麼我們就需要加入台灣的shape文件然後進行循環
嘿嘿這樣我們的台灣也變成紅色的了~
你要是想把各個省份的名字打出來看一下那麼你就添加這幾行代碼
好接下來我們可以通過國家人口普查做出的統計來給自己的地圖進行渲染(數據的話可以自己在「國家統計局」的網站上下載Excel文件之後轉成csv文件,這個我就不詳細解釋了)
接下來我們可以根於人口密集程度進行渲染,那麼首先我們就需要用到色彩映射表colormap,當然了matplotlib上有很多的選擇~貼出代碼
看~是不是一瞬間就變好看了?
完整版的代碼小編就不放在這裡了~因為有點長~單獨截圖就不好看了~
※為什麼程序員要學Python?
※1.5 讓VS Code擁有Python的Shell——「系統終端+IPython」
TAG:Python |