由于这样的原因,我经常避免使用Basemap,并使用OGR读取shapefile,并将其自己转换为Matplotlib艺术家.哪些是更多的工作,但也有更多的灵活性.
底图具有一些非常整洁的功能,例如将输入数据的坐标转换为“工作投影”.
如果您想粘贴Basemap,请获取一个不包含河流的shapefile.自然地球例如在物理部分有一个不错的“土地”形状文件(下载“等级”数据和解压缩).见http://www.naturalearthdata.com/downloads/10m-physical-vectors/
您可以使用来自Basemap的m.readshapefile()方法读取shapefile.这允许您在投影坐标中获取Matplotlib路径顶点和代码,然后可以将其转换为新路径.它有点绕路,但它为您提供了Matplotlib的所有样式选项,其中大部分不通过底图直接提供.它有点黑客,但我现在不是另一种方式,而是粘贴到底图.
所以:
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
from matplotlib.collections import PathCollection
from matplotlib.path import Path
fig = plt.figure(figsize=(8, 4.5))
plt.subplots_adjust(left=0.02, right=0.98, top=0.98, bottom=0.00)
# MPL searches for ne_10m_land.shp in the directory 'D:\\ne_10m_land'
m = Basemap(projection='robin',lon_0=0,resoluti