繪圖: matplotlib Basemap簡介
在資料視覺化過程中,我們常常需要將資料根據其採集的地理位置在地圖上顯示出來。比如說我們會想要在地圖上畫出城市,飛機的航線,乃至於軍事基地等等。通常來說,一個地理資訊系統都會帶有這樣的功能。今天我們討論如何在Python上實現,並且使用免費的工具包。
matplotlib是Python常用的資料繪製包。它基於numpy的陣列運算功能。matplotlib繪圖功能強大,可以輕易的畫出各種統計圖形,比如散點圖,條行圖,餅圖等。matplotlib常與numpy和scipy相配合,用於許多研究領域。他們是免費工具,但其功能足可以與科研界的大佬Matlab競爭。
Basemap是Matplotlib的一個子包,負責地圖繪製。 在資料視覺化過程中,我們常需要將資料在地圖上畫出來。比如說我們在地圖上畫出城市人口,飛機航線,軍事基地,礦藏分佈等等。這樣的地理繪圖有助於讀者理解空間相關的資訊。
我們下面用Basemap畫出亞洲主要城市的人口。如下圖,人口的數量用圓圈的大小表示:
資料如下(我從Wikipedia上整理的,你可以隨意使用)。將資料儲存在檔案major_city:
Shanghai 23019148 31.23N 121.47E China Mumbai 12478447 18.96N 72.82E India Karachi 13050000 24.86N 67.01E Pakistan Delhi 16314838 28.67N 77.21E India Manila 11855975 14.62N 120.97E Philippines Seoul 23616000 37.56N 126.99E Korea(South) Jakarta 28019545 6.18S 106.83E Indonesia Tokyo 35682460 35.67N 139.77E Japan Peking 19612368 39.91N 116.39E China
第一列是城市名,第二列是人口,第三第四列為緯度和經度,最後一列為所在國家。
下面是我的Python程式碼,用以繪製上面的地圖:
程式分為兩個部分,第一部分為從檔案讀取資料並處理。
第二部分才是真正用basemap繪圖。
地圖的大小、投影方法等重要資訊,是在Basemap()的呼叫中實現的:
map = Basemap(projection= ' ortho ',lat_0=35,lon_0=120,resolution= ' l ' )
projection引數規定了投影方法。改變投影方法,繪圖結果也將非常不同。
城市所在位置是經緯度。我們想要把經緯度對應影像的畫素點,需要轉換:
x, y = map(lons, lats)
這個語句轉換為影像上的位置。
最後,呼叫繪製散點圖的方法scatter():
cs = map.scatter(i,j,s=size,marker= ' o ',color= ' #FF5600 ' )
在地圖上畫出資料。
總結
matplotlib中的Basemap是很好用的,具有專業標準的地圖繪製工具。它可以與matplotlib的一般繪圖功能結合,在地圖上繪製資料。
文中需要的軟體包:
numpy, matplotlib, mpl_toolkits
可以使用pip來下載安裝各個包。
在Ubuntu的repository中,你可以找到python-matplotlib包。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31543790/viewspace-2674559/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 繪圖: Python matplotlib簡介繪圖Python
- python下Matplotlib繪圖案例與常見設定簡介Python繪圖
- Matplotlib 詳細繪圖繪圖
- Matplotlib繪圖基礎繪圖
- python繪圖之matplotlibPython繪圖
- Matplotlib基礎繪圖功能繪圖
- Matplotlib.pyplot.plot 繪圖繪圖
- Matplotlib直方圖繪製技巧直方圖
- 08【matplotlib】06matplotlib繪製多次圖形和不同圖形的差異介紹和總結
- Python matplotlib繪製散點圖Python
- python使用matplotlib繪圖詳解Python繪圖
- 利用 Matplotlib 繪製資料圖形(一)
- 利用 Matplotlib 繪製資料圖形(二)
- 使用Matplotlib繪製3D圖形3D
- Matplotlib呼叫imshow()函式繪製熱圖函式
- matplotlib的直方圖繪製(筆記)直方圖筆記
- Python Matplotlib繪製氣溫圖表Python
- Python 利用pandas和matplotlib繪製餅圖Python
- 使用python matplotlib實現動圖繪製Python
- python: matplotlib-繪製精美的圖表Python
- matplotlib 繪圖視覺化知識點整理繪圖視覺化
- [Python] Matplotlib 圖表的繪製和美化技巧Python
- Python 利用pandas 和 matplotlib繪製柱狀圖Python
- 【原】在Matplotlib繪圖中新增Latex風格公式繪圖公式
- [1]Python 中用 matplotlib 繪製熱點圖(heat map)Python
- Python Matplotlib繪製條形圖的全過程Python
- 大資料分析/機器學習基礎之matplotlib繪圖篇大資料機器學習繪圖
- 【原】使用Tkinter繪製GUI並結合Matplotlib實現互動式繪圖GUI繪圖
- canvas繪製圓形圖案程式碼示例簡單介紹Canvas
- MATLAB簡單繪圖Matlab繪圖
- 簡易流程圖繪圖軟體流程圖繪圖
- Python 利用pandas和matplotlib繪製柱狀折線圖Python
- 小提琴圖的繪製方法:Python matplotlib實現Python
- python 3D繪圖(matplotlib)中視角的改變Python3D繪圖
- Python--matplotlib繪圖視覺化知識點整理Python繪圖視覺化
- Python-matplotlib-入門教程(一)-基礎圖表繪製Python
- Matplotlib中將繪圖儲存到Numpy陣列的2種方法繪圖陣列
- [Python] BasemapPython