Jeff, Do you think it's possible the names or CITIESX020 variable are not being brought in in the right order? I modified my code to use scatter, and, although it looks like the dots are in the right place, the names aren't matching? see code: ========= import pylab as p import numpy from matplotlib.toolkits.basemap import Basemap as Basemap from matplotlib.colors import rgb2hex from matplotlib.patches import Polygon
# Lambert Conformal map of lower 48 states. # create new figure #http://nationalatlas.gov/metadata/citiesx020.faq.html #http://nationalatlas.gov/atlasftp.html?openChapters=chpref#chpref fig=p.figure() m1 = Basemap(llcrnrlon=-119,llcrnrlat=22,urcrnrlon=-64,urcrnrlat=49,\ projection='lcc',lat_1=33,lat_2=45,lon_0=-95,resolution='c') shp_info = m1.readshapefile(r'C:\Python25\Lib\basemap-0.9.9.1\examples\citiesx020','states',drawbounds=True) ax=p.gca() #define SHPT_POINT 1 Points #define SHPT_ARC 3 Arcs (Polylines, possible in parts) #define SHPT_POLYGON 5 Polygons (possible in parts) #define SHPT_MULTIPOINT 8 MultiPoint (related points) print shp_info print m1.states_info[0].keys() seqnum={} criteriatodisplay=[] names={} ii=0 for shapedict in m1.states_info: if int(shapedict['POP_2000'])>100000: #'STATE_FIPS', 'NAME', 'POP_2000', 'FEATURE', 'COUNTY', 'STATE', 'FIPS', 'CITIESX020', 'FIPS55', 'DISPLAY', 'POP_RANGE'] print 'STATE_FIPS = %s, NAME = %s, POP_2000=%s, FEATURE = %s, COUNTY=%s, STATE=%s, FIPS=%s, CITIESX020 = %s, FIPS55=%s, DISPLAY=%s, POP_RANGE=%s' %\ (str(shapedict['STATE_FIPS']), str(shapedict['NAME']), str(shapedict['POP_2000']), str(shapedict['FEATURE']), str(shapedict['COUNTY']), str(shapedict['STATE']), str(shapedict['FIPS']), str(shapedict['CITIESX020']), str(shapedict['FIPS55']), str(shapedict['DISPLAY']), str(shapedict['POP_RANGE'])) # have an index of the names seqnum[shapedict['CITIESX020']]=shapedict['NAME'] criteriatodisplay.append(shapedict['CITIESX020']) ii+=1 print ii #x, y = zip(*m1.states) #print m1.states[1] #print x[1] #print y[1] #ii=0 x=[] y=[] ii=0 for nshape,seg in enumerate(m1.states): if nshape in criteriatodisplay: x.append(seg[0]) y.append(seg[1]) p.text(seg[0],seg[1],seqnum[nshape],fontsize=12) ii+=1 #print 'Shape num %s, coords=%s' % (seqnum[nshape], seg) # ax.annotate(seqnum[nshape],seg) m1.scatter(x,y,2,'b',marker='o',faceted=False,zorder=10) #ax.annotate(s='s',xy=(int(x),int(y))) #p.figtext(x,y,'o',weight='heavy', size = 16) m1.drawcoastlines() m1.fillcontinents() m1.drawcountries() m1.drawstates() m1.drawparallels(numpy.arange(25,65,4),labels=[1,0,0,0]) m1.drawmeridians(numpy.arange(-120,-40,4),labels=[0,0,0,1]) p.title('Test Cities') p.show() ======== kurt <snip> ------------------------------------------------------------------------- Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace _______________________________________________ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users