查看Basemap docs,我可以看到如何实例化Basemap对象并覆盖内容:
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
import numpy as np
map = Basemap(projection='ortho',lat_0=45,lon_0=-100,resolution='l')
map.drawcoastlines(linewidth=0.25)
...
该对象名为map
,各种Basemap方法对其起作用。但我无法理解,在同一代码中,PyPlot(导入为plt
)的行为如何。似乎没有明显的PyPlot对象,对PyPlot模块的调用从不提及map
:
# make up some data on a regular lat/lon grid.
nlats = 73; nlons = 145; delta = 2.*np.pi/(nlons-1)
lats = (0.5*np.pi-delta*np.indices((nlats,nlons))[0,:,:])
lons = (delta*np.indices((nlats,nlons))[1,:,:])
wave = 0.75*(np.sin(2.*lats)**8*np.cos(4.*lons))
mean = 0.5*np.cos(2.*lats)*((np.sin(2.*lats))**2 + 2.)
# compute native map projection coordinates of lat/lon grid.
x, y = map(lons*180./np.pi, lats*180./np.pi)
# contour data over the map.
cs = map.contour(x,y,wave+mean,15,linewidths=1.5)
plt.title('contour lines over filled continent background')
plt.show()
PyPlot如何以及在何处与map
对象进行交互?
此外,在底部的第三行代码中,为什么要分配变量cs
,因为它实际上并未在代码的其他地方使用?我看到删除了cs =
的输出没有区别。
答案 0 :(得分:0)
pyplot
只是各种matplotlib
模块的接口。例如,plt.plot()
找到当前的Axes
对象(让我们称之为ax
)并使用ax.plot()
方法进行绘制。
一般情况下,直接操作Axes
或本例Basemap
对象是非常首选的风格。