On 6/29/10 1:19 PM, Thomas Lecocq wrote:
Hi,

What about ordering the arrays before plotting ? Are the first elements drawn back to front ?

Thomas

**********************
Thomas Lecocq
Geologist
Ph.D.Student (Seismology)
Royal Observatory of Belgium
**********************



------------------------------------------------------------------------
Date: Mon, 28 Jun 2010 12:55:22 -0400
From: athak...@weatherinnovations.com
To: matplotlib-users@lists.sourceforge.net
Subject: [Matplotlib-users] zorder for individual points in a scatter plot on a Basemap

Hi,

I'm currently using a scatter plot on a Basemap and I'd like to set the zorder of the individual points based on their temperature. The higher the temperature, the higher the zorder. Also, i'm using a colorbar to set the colors for the plot. Here is a snippet of my code:

        x = np.array(val)
        fig.sca(ax1)
        lon_0 =(urcrnrlon+llcrnrlon)/2
        lat_0 =(urcrnrlat+llcrnrlat)/2
m = Basemap(llcrnrlon=llcrnrlon,llcrnrlat=llcrnrlat,urcrnrlon=urcrnrlon, urcrnrlat=urcrnrlat,resolution='i',projection='cyl',lon_0=lon_0,lat_0=lat_0)
        m.drawcoastlines()
        m.drawmapboundary()
        m.drawparallels(np.arange(llcrnrlat-1,urcrnrlat+1,5.))
        m.drawmeridians(np.arange(llcrnrlon-1,urcrnrlon+1,5.))
        m.fillcontinents(color='white',lake_color='aqua')
        m.drawcountries(linewidth=1)
        lons,lats = m(lon,lat)

        #I can do it this way, but this screws up the colorbar
        #for i in range(len(x)):
# m.scatter(lons[i],lats[i],c=x[i],marker='o',picker=5,zorder=x[i])

        m.scatter(lons,lats,c=x,marker='o',picker=5)
plt.title('Time Range: %s to %s'%(startDay.strftime("%b-%d %H:%M"),endDay.strftime("%b-%d %H:%M")))
        plt.colorbar(shrink=0.5)

Is there anyway to set the zorder of the points without using the loop in commented code? Any help would be greatly appreciated.

Thanks,


Aman: You can save the mappable from the scatter you want the colorbar to represent, then pass that to colorbar. i.e.

im = m.scatter(lons,lats,c=x,marker='o',picker=5) # plot all the pts, save mappable
# now do one at a time
for i in range(len(x)):
    m.scatter(lons[i],lats[i],c=x[i],marker='o',picker=5,zorder=x[i])
plt.colorbar(im,shrink=0.5) # use mappable from 1st call to scatter for colorbar

-Jeff

--
Jeffrey S. Whitaker         Phone  : (303)497-6313
Meteorologist               FAX    : (303)497-6449
NOAA/OAR/PSD  R/PSD1        Email  : jeffrey.s.whita...@noaa.gov
325 Broadway                Office : Skaggs Research Cntr 1D-113
Boulder, CO, USA 80303-3328 Web    : http://tinyurl.com/5telg

------------------------------------------------------------------------------
This SF.net email is sponsored by Sprint
What will you do first with EVO, the first 4G phone?
Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to