On second thought, the code requires basemap package too.
Mike  

--- On Tue, 4/19/11, Michael Rawlins <rawlin...@yahoo.com> wrote:

From: Michael Rawlins <rawlin...@yahoo.com>
Subject: Re: [Matplotlib-users] plotting points/locations from data file
To: "G Jones" <glenn.calt...@gmail.com>
Cc: Matplotlib-users@lists.sourceforge.net
Date: Tuesday, April 19, 2011, 8:26 PM


The first example produced no plotted symbols but no errors on execution.  The 
second example produced this:

Plotting, please wait...maybe more than 10 seconds
Traceback (most recent call last):
  File "testNew.py", line 137, in <module>
    data = np.loadtxt('file2.txt')
  File "/usr/lib/python2.6/dist-packages/numpy/lib/io.py", line 489, in loadtxt
    X.append(tuple([conv(val) for (conv, val) in zip(converters, vals)]))
ValueError: invalid literal for float(): 39.4670,
  

Grrrr......  

My code follows.  I believe this is standard python and matplotlib.  Should 
produce a map of Northeast US.  Perhaps someone could get this working with a 
few example points:

39.4670, -76.1670
46.4000, -74.7670
45.3830, -75.7170
43.6170,
 -79.3830
45.5170, -73.4170
45.6170, -74.4170
43.8330, -77.1500
43.9500, -78.1670
43.2500, -79.2170
43.8330, -66.0830


#!/usr/bin/env python
# v0.5 19 June 2010
# General purpose plotter of 2-D gridded data from NetCDF files,
# plotted with map boundaries.
# NetCDF file should have data in either 2-D, 3-D or 4-D arrays.
# Works with the netCDF files in the tutorial, and also the
# files available for download at:
# http://www.cdc.noaa.gov/cdc/data.ncep.reanalysis.html 
# Adapted from the basemap example plotmap_pcolor.py,
# Some of the variable names from that example are retained.
#
# Uses basemap's pcolor function.  Pcolor accepts arrays
# of the longitude and latitude  points of the vertices on the pixels,
# as well as an array with the numerical value in the pixel. 

verbose=0 #verbose=2 says a bit more

import sys,getopt

from mpl_toolkits.basemap import
 Basemap, shiftgrid, cm 
#from netCDF3 import Dataset as NetCDFFile 
from mpl_toolkits.basemap import  NetCDFFile
from pylab import *
#from matplotlib.mlab import csv2rec

alloptions, otherargs= getopt.getopt(sys.argv[1:],'ro:p:X:Y:v:t:l:u:n:') # note 
the : after o and p
proj='lam'
#plotfile=None
#plotfile='testmap2.png'
usejetrev=False
colorbounds=[None,None]
extratext=""
xvar=None
yvar=None
thevar=None

therec=None
thelev=None
cbot=None
ctop=None
startlon=-180 #default assumption for starting longitude
for theopt,thearg in alloptions:
    print theopt,thearg
    if theopt=='-o': # -o needs filename after it, which is now thearg
        plotfile=thearg    
    elif theopt=='-p': 
        proj=thearg
    elif theopt=='-X':
 
        xvar=thearg
    elif theopt=='-Y': 
        yvar=thearg
    elif theopt=='-v': 
        thevar=thearg
    elif theopt=='-t': 
        thetitle=thearg
    elif theopt=='-l': 
        cbot=thearg
    elif theopt=='-u': 
        ctop=thearg
    elif theopt=='-n': 
        therec=thearg
    elif theopt=='-m': 
        thelev=thearg
    elif theopt=='-r': 
        usejetrev=True
    else: #something went wrong
        print "hmm, what are these??? ", theopt,
 thearg
        sys.exit()

print "\nPlotting, please wait...maybe more than 10 seconds"
if proj=='lam': #Lambert Conformal
    m = Basemap(llcrnrlon=-80.6,llcrnrlat=38.4,urcrnrlon=-66.0,urcrnrlat=47.7,\
            resolution='l',area_thresh=1000.,projection='lcc',\
            lat_1=65.,lon_0=-73.3)
    xtxt=200000. #offset for text
    ytxt=200000.
    parallels = arange(38.,48.,4.)
    meridians = arange(-80.,-68.,4.)
else: #cylindrical is default
#    m = Basemap(llcrnrlon=-180.,llcrnrlat=-90,urcrnrlon=180.,urcrnrlat=90.,\
#            resolution='c',area_thresh=10000.,projection='cyl')
    m =
 
Basemap(llcrnrlon=startlon,llcrnrlat=-90,urcrnrlon=startlon+360.,urcrnrlat=90.,\
            resolution='c',area_thresh=10000.,projection='cyl')
    xtxt=1.
    ytxt=0.
    parallels = arange(-90.,90.,30.)
    if startlon==-180:
        meridians = arange(-180.,180.,60.)
    else:
        meridians = arange(0.,360.,60.)

if verbose>1: print m.__doc__ 
xsize = rcParams['figure.figsize'][0]
fig=figure(figsize=(xsize,m.aspect*xsize))
#ax = fig.add_axes([0.08,0.1,0.7,0.7],axisbg='white')
ax = fig.add_axes([0.06,0.00,0.8,1.0],axisbg='white')
# make a pcolor plot.
#x, y = m(lons, lats)
#p = m.pcolor(x,y,maskdat,shading='flat',cmap=cmap)
#clim(*colorbounds)

# axes units units are left, bottom, width,
 height
#cax = axes([0.85, 0.1, 0.05, 0.7])  #  colorbar axes for map w/ no graticule
cax = axes([0.88, 0.1, 0.06, 0.81])  #  colorbar axes for map w/ graticule

axes(ax)  # make the original axes current again

#########    Plot symbol at station locations    #################

#lines=open('file2.txt','r').readlines()
#(lats,lons)=([],[])
#for line in lines:
#    (lat,lon)=line.strip().split(',')
#    lats.append(float(lat))
#    lons.append(float(lon))

#for i in range(len(lons)):
#    plt.plot(lats,lons,'*')

#plt.plot(lons,lats,'*')

#data = csv2rec('file2.txt',delimiter=',')
#plot(data[:,0],data[:,1],'o')

#data = csv2rec('file2.txt',delimiter=' ',names=['lat','lon'])
#plot(data['lat'],data['lon'],'o')

data =
 np.loadtxt('file2.txt')
plot(data[:,0],data[:,1],'o')

xpt,ypt = m(-75.0,43.0)
text(xpt,ypt,'*')


# draw coastlines and political boundaries.
m.drawcoastlines()
m.drawcountries()
m.drawstates()
# draw parallels and meridians.
# label on left, right and bottom of map.
m.drawparallels(parallels,labels=[1,0,0,0])
m.drawmeridians(meridians,labels=[1,1,0,1])
    
#if plotfile:
#    savefig(plotfile, dpi=72, facecolor='w', bbox_inches='tight', 
edgecolor='w', orientation='portrait')
#else:
#    show()

#plt.savefig('map.png')
plt.savefig('map.eps')
#  comment show to mass produce




--- On Tue, 4/19/11, G Jones <glenn.calt...@gmail.com> wrote:

From: G Jones <glenn.calt...@gmail.com>
Subject: Re:
 [Matplotlib-users] plotting points/locations from data file
To: "Michael Rawlins" <rawlin...@yahoo.com>
Cc: "Ian Bell" <ib...@purdue.edu>, Matplotlib-users@lists.sourceforge.net
Date: Tuesday, April 19, 2011, 8:12 PM

No need for a header, but I guess my example was a little too simple. You could 
do:
data = csv2rec(filename,delimiter=' ',names=['lat','lon'])
plot(data['lat'],data['lon'],'o')


or you could do
data = np.loadtxt(filename)
plot(data[:,0],data[:,1],'o')

In general, I strongly recommend developing with ipython --pylab. That way all 
the documentation is at your fingertips using the ? and ?? notation.




-----Inline Attachment Follows-----

------------------------------------------------------------------------------
Benefiting from Server Virtualization: Beyond Initial Workload 
Consolidation -- Increasing the use of server virtualization is a top
priority.Virtualization can reduce costs, simplify management, and improve 
application availability and disaster protection. Learn more about boosting 
the value of server virtualization. http://p.sf.net/sfu/vmware-sfdev2dev
-----Inline Attachment Follows-----

_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users
------------------------------------------------------------------------------
Benefiting from Server Virtualization: Beyond Initial Workload 
Consolidation -- Increasing the use of server virtualization is a top
priority.Virtualization can reduce costs, simplify management, and improve 
application availability and disaster protection. Learn more about boosting 
the value of server virtualization. http://p.sf.net/sfu/vmware-sfdev2dev
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to