python繪製別樣的地圖

最近老師布置了關於python的作業,受此啟發寫了個小程序,用python的GDAL、matplotlib和Rtree等包繪製了世界地圖,就當自娛自樂了。

人都是視覺動物,所以我直接上圖,展示結果:

紅星中國版:

把每個國家都用點來表示,並且各個國家顏色不同。細心的你一定會發現,我把中國用紅色的五角星標記了。

凌亂版:

抽象派藝術家的畫風,看似有些凌亂,細細品味又有一絲美感,看著沒啥可取之處,但就是有極高的藝術價值。凌亂的線條之中包含著清晰的規律,各大洲的輪廓顯而易見,而且像俄羅斯、中國、美國、加拿大、澳大利亞這些幅員遼闊的國家很容易辨認。其實我原本是想用點表示每個國家的,完全是用錯了函數,散點圖畫成了折線圖,有了這意外的收穫。

百花齊放版:

這個版本顧名思義,每個國家的標誌都不一樣,象徵著每個國家有著不同的特色,我稱之為百花齊放版。

coldplay歌詞版:

因為經常聽coldplay的歌,所以想起來用酷玩的歌詞做一個詞雲,世界地圖做mask,,順便看看coldplay的歌中出現頻率比較高的單詞。我選取的也都是一些經典的歌曲,像Viva La Vida, Yellow, A sky full of stars, Scientist, Up&Up等等。

最醒目的就是非洲大陸上的oh了,歌嘛,就是用來抒發情感的。

下面解釋一下怎麼實現的。

數據說明:

worldCountries.shp是程序的輸入文件,可以用ArcGIS打開查看,裡面包含全世界200多個國家的多邊形對象以及相應的屬性信息,比如國家名、面積等。我們生成的點顏色就是根據國名指定的。

worldPoints.shp是程序的輸出文件,是按照經緯度間隔為2度生成的點對象,每個點有ID號和國家屬性。

程序說明:

python版本3.6,主要用到的包有:numpy, matplotlib, rtree, gdal

Shape類實現了矢量文件的讀寫;

WorldPoints類中的draw函數實現了生成點對象,並建立rtree索引,判斷點屬於哪一國家,最後用matplotlib繪製出圖。

詞雲是參照wordcloud官網上的例子做的。

最後,送上代碼和數據文件 (鏈接密碼:54tk),感興趣的同學可以看看。

感謝您的閱讀,歡迎大家討論點評。


推薦閱讀:

15張圖入門Matplotlib
matplotlib & visdom 的圖片顯示問題
Matplotlib 可視化系列一
使用Matplotlib畫動態圖實例
Python數據抓取與可視化實戰——網易雲課堂人工智慧與大數據板塊課程實戰

TAG:Python | Matplotlib | Coldplay |