用 Python 繪製中國地圖(下)
作者:張京
來源:https://segmentfault.com/a/1190000010900212
在上一篇文章《用Python畫一個中國地圖》中,我們簡單描述了一下如何用 快速畫出一個中國地圖的輪廓,似乎沒有什麼實用價值,這一次我們用實際數據填充它,使它看上去更有意義。
上色
延續上一次的代碼,我們這次還是只增加 行代碼:
在展示結果之前,稍微解釋一下。第 行 ,函數名看上去很詭異,是因為 里大量使用了縮寫,這個 就是 的縮寫,實際上就是要獲得當前圖形的座標軸。然後我們開始一個循環,把圖形文件中各個省的多邊形取出來,給它一個顏色,在這裡我們統一放上紅色,也就是 的縮寫 ,然後把這個多邊形放在我們圖形的座標軸上,然後就得到了下圖:
糟糕,怎麼能少了台灣呢?在此鄭重聲明:台灣是中華人民共和國不可分割的領土!加入台灣的 文件,然後循環一下:
好了,這下祖國山河一片紅,看上去正確多了。
接下來,你還可以把各個省的名字打出來看一下,具體代碼就不解釋了:
結果如下:
數據
接下來我們去國家統計局搞點 數據 ,第六次全國人口普查數據可以直接下載 文件,略作修改,導出成 文件,用我們上一課講的方法,一句話讀取進來:
直接輸出,大概是下面這個樣子:
渲染
好了,數據也有了,我們終於要開始做一些激動人心的事情了。我們希望根據各省人口的多少用深淺不同的顏色為各個省份染色,那麼首先第一步,我們需要選擇一個調色板,也就是色彩映射表 ,為此, 為你準備了 數不勝數的選擇 ,我們隨便選擇一款國旗色紅黃色調的吧:
然後我們把每個省的數據映射到 上:
最後,我們把各個省的顏色描在地圖上:
噠噠,我們的全國人口數量熱力圖就完成了!可以看到河南、四川、廣東、山東幾個省的顏色比較深,說明這幾個省的人口總數最多,而西藏顏色最淺,代表這裡的人口總數最少。
這裡只是簡單地舉了一個例子,你還可以把各省的人口總數除以面積,得到人口密度數據,你還可以把各省的經濟總量畫在圖上,總之,有了這個入門的方法,一切就都簡單了呢。
最後,附上完整的代碼供大家參考。
題圖:pexels,CC0 授權。
TAG:編程派 |