matplotlib - 是否有与Basemap对象交互的实际PyPlot对象?

时间:2014-04-29 17:11:53

标签: matplotlib-basemap

查看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 =的输出没有区别。

1 个答案:

答案 0 :(得分:0)

pyplot只是各种matplotlib模块的接口。例如,plt.plot()找到当前的Axes对象(让我们称之为ax)并使用ax.plot()方法进行绘制。

一般情况下,直接操作Axes或本例Basemap对象是非常首选的风格。