无法使用底图和箭袋强制 zorder

Cannot force zorder with basemap and quiver

我无法使用 matplolib 底图和箭袋强制 zorder 绘制重叠图。

这是我正在做的 (Mac OsX, python 3.6)

from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt

latmin = -33.496886
latmax = -33.388023
lonmin = -70.692902
lonmax = -70.515747

map_s = Basemap(projection = 'merc', epsg=4326, llcrnrlat=latmin, urcrnrlat=latmax,
                llcrnrlon=lonmin, urcrnrlon=lonmax, lat_ts=20, resolution='i')
map_s.arcgisimage(service='ESRI_Imagery_World_2D',
                  xpixels=200, verbose=True)

x, y, u, v = -70.564464625, -52.011810175, -0.2569774, -0.1781287
lon, lat = map_s(float(x), float(y))
map_s.quiver(lon, lat, float(u), float(v), width=0.005, scale_units='xy',
             scale=1, color='r', zorder=100)

plt.xlabel('Longitude')
plt.ylabel('Latitude')
plt.show()

当我执行此操作时,卫星图像位于红色矢量上方,而我希望看到相反的情况,即红色矢量位于卫星图像上方。

我也试过 (ex1)

plt.quiver(lon, lat, float(u), float(v), width=0.005, scale_units='xy',
             scale=1, color='r', zorder=100)

而不是 (ex2)

map_s.quiver(lon, lat, float(u), float(v), width=0.005, scale_units='xy',
             scale=1, color='r', zorder=100)

但结果是一样的。我错过了什么,我做错了什么?

(小问题:当我删除部分时

map_s.arcgisimage(service='ESRI_Imagery_World_2D',
                  xpixels=200, verbose=True)

当我执行 (ex1) 但不是 (ex2) 时,我可以看到矢量。应该是吧)

非常感谢!

你的箭袋箭头剧情位置越界,尺寸太大。 Zorder 无关,默认值即可。 这是调整箭头位置和大小以在图像范围内绘制的代码。

from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt

latmin = -33.496886
latmax = -33.388023
lonmin = -70.692902
lonmax = -70.515747

map_s = Basemap(projection = 'merc', epsg=4326, llcrnrlat=latmin, urcrnrlat=latmax,
                llcrnrlon=lonmin, urcrnrlon=lonmax, lat_ts=20, resolution='i')
map_s.arcgisimage(service='ESRI_Imagery_World_2D',
                  xpixels=200, verbose=True)

# Out of limits x,y,u,v=-70.5644,-52.0118,-0.2569,-0.1781
x, y, u, v = -70.55, -33.4, -0.05, -0.05

lon, lat = map_s(float(x), float(y))
map_s.quiver(lon, lat, float(u), float(v), width=0.005, scale_units='xy',
             scale=1, color='r')

plt.xlabel('Longitude')
plt.ylabel('Latitude')
plt.show()

您必须决定要调整的是图像限制还是箭袋。