- 二十七、Basemap 自定义
二十七、Basemap 自定义
在这篇 Matplotlib 教程中,我们继续使用Basemap地理绘图扩展。 我们将展示一些我们可用的自定义选项。
首先,从上一个教程中获取我们的起始代码:
from mpl_toolkits.basemap import Basemapimport matplotlib.pyplot as pltm = Basemap(projection='mill')m.drawcoastlines()plt.show()
我们可以从放大到特定区域来开始:
from mpl_toolkits.basemap import Basemapimport matplotlib.pyplot as pltm = Basemap(projection='mill',llcrnrlat = -40,llcrnrlon = -40,urcrnrlat = 50,urcrnrlon = 75)m.drawcoastlines()plt.show()
这里的参数是:
llcrnrlat- 左下角的纬度llcrnrlon- 左下角的经度urcrnrlat- 右上角的纬度urcrnrlon- 右上角的经度
此外,坐标需要转换,其中西经和南纬坐标是负值,北纬和东经坐标是正值。
使用这些坐标,Basemap会选择它们之间的区域。

下面,我们要使用一些东西,类似:
m.drawcountries(linewidth=2)
这会画出国家,并使用线宽为 2 的线条生成分界线。
另一个选项是:
m.drawstates(color='b')
这会用蓝色线条画出州。
你也可以执行:
m.drawcounties(color='darkred')
这会画出国家。
所以,我们的代码是:
from mpl_toolkits.basemap import Basemapimport matplotlib.pyplot as pltm = Basemap(projection='mill',llcrnrlat = -90,llcrnrlon = -180,urcrnrlat = 90,urcrnrlon = 180)m.drawcoastlines()m.drawcountries(linewidth=2)m.drawstates(color='b')m.drawcounties(color='darkred')plt.title('Basemap Tutorial')plt.show()

很难说,但我们定义了美国的区县的线条。 我们可以使用放大镜放大Basemap图形,就像其他图形那样,会生成:

另一个有用的选项是Basemap调用中的『分辨率』选项。
m = Basemap(projection='mill',llcrnrlat = -90,llcrnrlon = -180,urcrnrlat = 90,urcrnrlon = 180,resolution='l')
分辨率的选项为:
c- 粗糙l- 低h- 高f- 完整
对于更高的分辨率,你应该放大到很大,否则这可能只是浪费。
另一个选项是使用etopo()绘制地形,如:
m.etopo()
使用drawcountries方法绘制此图形会生成:

最后,有一个蓝色的大理石版本,你可以调用:
m.bluemarble()
会生成:

目前为止的代码:
from mpl_toolkits.basemap import Basemapimport matplotlib.pyplot as pltm = Basemap(projection='mill',llcrnrlat = -90,llcrnrlon = -180,urcrnrlat = 90,urcrnrlon = 180,resolution='l')m.drawcoastlines()m.drawcountries(linewidth=2)##m.drawstates(color='b')##m.drawcounties(color='darkred')#m.fillcontinents()#m.etopo()m.bluemarble()plt.title('Basemap Tutorial')plt.show()`
