Hi,

I'm running into a problem with overlaying a scatter plot on a polygon that
is on a Basemap.  The polygon covers up the scatter plot created by the
basemap.  To show the issue, the simple example below and broken down into
three steps: 1) creating the map, 2) adding the red polygon, and 3) adding
the "x" markers via a scatter plot.  You will see that the "x" markers are
not on top of the polygon.

Why does the polygon cover up the markers, even though I have the markers
added after the polygon?  Would there be a better way to do this?  I could
set the polygon alpha to, say, 0.5, but this feature does not show when I
save it as an eps image.  Therefore, I would like to keep alpha=1.

Thanks,
Tim

from mpl_toolkits.basemap import Basemap
import numpy as np
from matplotlib.pyplot import *
from matplotlib.patches import Polygon


# ---------------------
# Part 1: Draw the map
# ---------------------

# Hawaii:
lat_0 = 20.71-8.
lon_0 = 203.83

figure(1); clf();
m = Basemap(width=2500e3,height=2500e3,
        resolution='l',projection='stere', \
                lat_ts=lat_0,lat_0=lat_0,lon_0=lon_0)

m.drawcoastlines()
m.fillcontinents(color='coral',lake_color='aqua')

# draw parallels and meridians:
m.drawmapboundary(fill_color='aqua')

lats = np.arange(np.floor(m.latmin),np.ceil(m.latmax),2.)
lons = np.arange(190.,211.,5.)
m.drawparallels(lats,labels=[True,False,False,False])
m.drawmeridians(lons,labels=[False,False,False,True])

draw(); show()

# ---------------------
# Part 2: Add a polygon
# ---------------------

lon_poly = np.array([-160., -150., -150., -160.,])
lat_poly = np.array([10., 10., 14., 14.,])
X, Y  = m(lon_poly, lat_poly)
xy = np.vstack([X,Y]).T

poly = Polygon(xy, closed=True, \
        facecolor='red', \
        linewidth=1., \
        )

gca().add_patch(poly)

# ---------------------
# Part 3: add some 'x' markers
# ---------------------

lon_markers = np.arange(-168.,-144.,2.)
lat_markers = np.arange(5.,20.,1.)
X, Y = np.meshgrid(lon_markers, lat_markers)

x, y = m(X.ravel(), Y.ravel())
m.scatter(x,y,marker='x')

draw(); show()
------------------------------------------------------------------------------
LogMeIn Rescue: Anywhere, Anytime Remote support for IT. Free Trial
Remotely access PCs and mobile devices and provide instant support
Improve your efficiency, and focus on delivering more value-add services
Discover what IT Professionals Know. Rescue delivers
http://p.sf.net/sfu/logmein_12329d2d
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to