MacOS下Python安裝BaseMap包

BaseMap簡介

matplotlib是Python常用的數據繪製包。它基於numpy的數組運算功。
matplotlib繪圖功能強大,可以輕易的畫出各種統計圖形,比如散點圖,條行圖,餅圖等。matplotlib常與numpy和scipy相配合,用於許多研究領域。他們是免費工具,但其功能足可以與科研界的大佬Matlab競爭。
Basemap是Matplotlib的一個子包,負責地圖繪製。在數據可視化過程中,我們常需要將數據在地圖上畫出來。比如說我們在地圖上畫出城市人口,飛機航線,軍事基地,礦藏分佈等等。這樣的地理繪圖有助於讀者理解空間相關的信息。
這裏是使用簡介和實例。
https://www.cnblogs.com/vamei/archive/2012/09/16/2687954.html
https://github.com/matplotlib/basemap/releases

Basemap 是matplotlib子包,也是python中最常用、最方便的地理數據可視化工具之一。使用傳統python安裝包的方法(pip install basemap 或者conda install basemap)經常報錯,提示結果爲Python 2.7 basemap和Python 3.6衝突(圖),儘管2.7非常經典且世面大多數資料仍然是基於2.X版本,但官方已經宣佈2.X版本只維護到2020年,3.X纔是未來。

Basemap 是matplotlib子包,也是python中最常用、最方便的地理數據可視化工具之一。使用傳統python安裝包的方法(pip install basemap 或者conda install basemap)經常報錯,提示結果爲Python 2.7 basemap和Python 3.6衝突(圖),儘管2.7非常經典且世面大多數資料仍然是基於2.X版本,但官方已經宣佈2.X版本只維護到2020年,3.X纔是未來。

下面將windows環境下Python 3.X安裝basemap的方法分享,供大家參考。

前提:我的電腦配置爲64爲win10,Anaconda 3(64位),Python 3.6。

1.首先,在Python Extension Packages for Windows根據自己電腦配置及Python版本選擇下載Basemap和pyproj兩個安裝文件,這個網站主要提供非官方的windows環境下的Python擴展包

basemap下載地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/
Pyproj下載地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/#pyproj

其中,basemap後面的1.1.0代表版本號,cp36代表python3.6,win代表windows,amd64代表64位系統。basemap大約120M,pyproj只有3M多。

  1. win+R 打開命令提示符窗口,cd命令將當前目錄設置爲下載文件存放的文件夾(我放在桌面)後點回車鍵。注:如果你使用spyder 3.2以上的版本,請在Anaconda Prompt(my_root)執行以下安裝命令,步驟一樣。

3.然後開始安裝兩個文件,首先安裝pyproj

pip install pyproj-1.9.5.1-cp36-cp36m-win_amd64.whl
需要注意的是文件名全稱,且後綴名(.whl)不能丟,提示安裝成功後,同樣的命令安裝basemap

pip install basemap-1.1.0-cp36-cp36m-win_amd64.whl

此處出現錯誤

You are using pip version 9.0.1, however version 9.0.2 is available.

You should consider upgrading via the ‘python -m pip install --upgrade pip’ command.

通過使用easy_install指令安裝成功了:
首先進入到easy_install的目錄 例如C:\ProgramData\Anaconda3\Scripts
然後通過指令 easy_install.exe pip==9.0.2 最後安裝成功。

安裝成功後會提示Successfully installed。

  1. 然後測試是否安裝成功
import numpy as np
import pandas as pd
import xarray as xy
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
import os

os.chdir(r'F:\NCEP')
temp = xy.open_dataset('air.mon.mean.v401.nc')
air = temp['air']
T30 = temp.sel(time=slice('1981-01-01', '2010-12-01'))
t_average = T30.groupby('time.year').mean(dim='time')
t = t_average.mean(dim='year')
tmp = t['air']
lon = t['lon'][:]
lat = t['lat'][:]
lon, lat = np.meshgrid(lon, lat)

def plt_map(data):
    m = Basemap(projection='mill', llcrnrlat=-90, urcrnrlat=90, llcrnrlon=-180, urcrnrlon=180,
                lat_ts=30, resolution='c')
    x, y = m(lon, lat)
    plt.xlim(-180, 180)
    plt.figure(figsize=(10, 7))
    m.drawcoastlines()
    m.drawparallels(np.arange(-90., 91., 30.))
    m.drawmeridians(np.arange(0., 361., 30))
    m.drawmapboundary(fill_color='white')
    m.contourf(x, y, data, levels=np.linspace(-25, 30, 56), extend='both')
    plt.colorbar(orientation='horizontal', pad=0.05)
plt_map(tmp)

結果:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章