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 |