Work at SourceForge, help us to make it a better place! We have an immediate need for a Support Technician in our San Francisco or Denver office.

## Re: [Matplotlib-users] zorder for individual points in a scatter plot on a Basemap

 Re: [Matplotlib-users] zorder for individual points in a scatter plot on a Basemap From: Jeff Whitaker - 2010-06-29 19:39:29 Attachments: Message as HTML ```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: athakral@... > To: matplotlib-users@... > 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.Whitaker@... 325 Broadway Office : Skaggs Research Cntr 1D-113 Boulder, CO, USA 80303-3328 Web : http://tinyurl.com/5telg ```

 [Matplotlib-users] zorder for individual points in a scatter plot on a Basemap From: Aman Thakral - 2010-06-28 18:00:25 Attachments: Message as HTML ``` 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 -- Aman Thakral B.Eng & Biosci, M.Eng Design ```
 [Matplotlib-users] zorder for individual points in a scatter plot on a Basemap From: Aman Thakral - 2010-06-28 17:56:38 Attachments: Message as HTML ```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 ```
 Re: [Matplotlib-users] zorder for individual points in a scatter plot on a Basemap From: Thomas Lecocq - 2010-06-29 19:19:40 Attachments: Message as HTML ```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: athakral@... To: matplotlib-users@... 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 ```
 Re: [Matplotlib-users] zorder for individual points in a scatter plot on a Basemap From: Jeff Whitaker - 2010-06-29 19:39:29 Attachments: Message as HTML ```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: athakral@... > To: matplotlib-users@... > 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.Whitaker@... 325 Broadway Office : Skaggs Research Cntr 1D-113 Boulder, CO, USA 80303-3328 Web : http://tinyurl.com/5telg ```
 Re: [Matplotlib-users] zorder for individual points in a scatter plot on a Basemap From: Aman Thakral - 2010-06-29 20:47:13 Attachments: Message as HTML ```Hi, Thanks for the suggestions. I also came the same conclusion about ordering the arrays before hand. This did the trick for the zorder, but I also have to make the marker unique for each data point. I need to keep everything into one artist since I'm using a pick event to display the data represented by that point. I'm not sure how I can use just 1 Artist, but get a variety of distinct shapes (circles, squares, and triangles should be sufficient). Thanks so much! Aman PS. Sorry about the duplicate emails Jeff. I forgot to hit "Reply to All" the first time. On Tue, Jun 29, 2010 at 3:39 PM, Jeff Whitaker wrote: > 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: athakral@... > To: matplotlib-users@... > 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.Whitaker@... > 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@... > https://lists.sourceforge.net/lists/listinfo/matplotlib-users > > -- Aman Thakral B.Eng & Biosci, M.Eng Design ```