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多。
2. 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。
4. 然后测试是否安装成功
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)
结果: