Basemap
Basemap是可视化库Matplotlib的拓展包,可以绘制二维地图,就像下图这样,库内部包含了国家边界、河流等数据集
经度范围是-360到720,纬度范围是-90到90,绘制坐标需要使用map(lon,lat)把地图坐标转换到matplotlib的坐标系中
安装
下载地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/
安装Basemap之前需要先安装pyproj,下载对应的安装包,然后在下载的文件夹下使用命令行安装:
pip install pyproj-1.9.5.1-cp36-cp36m-win_amd64.whl
pip install basemap-1.1.0-cp36-cp36m-win_amd64.whl
使用
实现第一种效果:
import time
import numpy as np
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
t_color = ['g', 'b', 'r', 'c', 'k', 'm', 'y', 'orange', 'peru', 'navy', 'thistle']
def show_map(lon, lat, color='m'):
plt.figure(figsize=(25, 10))
map = Basemap(llcrnrlon=None, llcrnrlat=None, urcrnrlon=None, urcrnrlat=None, )
map.etopo()
map.drawcoastlines(linewidth=0.5)
map.drawrivers()
map.drawcountries()
map.drawstates()
map.drawmapboundary()
lon, lat = map(lon, lat)
plt.scatter(lon, lat, marker='+', color=color, linewidth=1)
file_name = time.strftime('%Y%m%d%H%M%S', time.localtime(time.time()))
plt.savefig(file_name + '.png')
plt.clf()
num = 3000
x = 360*np.random.randn(num)
y = 90* np.sin(0.05 * x)
show_map(x,y)
实现第二种效果:
import time
import numpy as np
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
t_color = ['g', 'b', 'r', 'c', 'k', 'm', 'y', 'orange', 'peru', 'navy', 'thistle']
def show_map(lon, lat, color='m'):
plt.figure(figsize=(25, 10))
map = Basemap(projection='ortho',llcrnrlon=None, llcrnrlat=None, urcrnrlon=None, urcrnrlat=None,lat_0=30, lon_0=110)
map.etopo()
map.drawcoastlines(linewidth=0.5)
map.drawrivers()
map.drawstates()
map.drawmapboundary()
lon, lat = map(lon, lat)
plt.scatter(lon, lat, color=color, linewidth=0.5)
file_name = time.strftime('%Y%m%d%H%M%S', time.localtime(time.time()))
plt.savefig(file_name + '.png')
plt.clf()
num = 5000
x = 360*np.random.random(num)
y = 40* np.sin(0.1 * x)
show_map(x,y)