【问题标题】:Cannot force zorder with basemap and quiver无法使用底图和箭袋强制 zorder
【发布时间】:2017-05-16 10:11:09
【问题描述】:

我无法使用 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) 时,我可以看到向量。应该是这样)

非常感谢!

【问题讨论】:

    标签: python-3.x matplotlib-basemap


    【解决方案1】:

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

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

    【讨论】:

    • 当然,你是对的。我完全错过了。非常感谢!
    猜你喜欢
    • 2017-03-17
    • 1970-01-01
    • 2016-07-04
    • 2017-06-14
    • 1970-01-01
    • 2017-02-22
    • 1970-01-01
    • 2021-05-07
    • 1970-01-01
    相关资源
    最近更新 更多