无法强制zorder与底图和箭袋

时间:2017-05-15 19:36:53

标签: python-3.x matplotlib-basemap

我无法强制使用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)。应该是这样吗)

非常感谢!

1 个答案:

答案 0 :(得分:0)

箭头箭头的绘图位置超出范围,其大小太大。 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()

enter image description here

您必须决定调整哪个,图像限制或箭袋。