From: Michael R. <raw...@ya...> - 2011-04-19 23:27:07
|
Sorry I should have mentioned that longitudes are negative; there is a '-' before each longitude, like so: 39.4670 -76.1670 46.4000 -74.7670 45.3830 -75.7170 43.6170 -79.3830 45.5170 -73.4170 Also the plt.text line you sent had lon[i] rather than lons[i]. I corrected that and changed my longitudes to not have the '-' sign and the code ran without error. Could the '-' be causing a problem? I need to input the lat, lon as in the file as shown above. Mike --- On Tue, 4/19/11, Ian Bell <ib...@pu...> wrote: From: Ian Bell <ib...@pu...> Subject: Re: [Matplotlib-users] plotting points/locations from data file To: "Michael Rawlins" <raw...@ya...> Cc: Mat...@li... Date: Tuesday, April 19, 2011, 7:22 PM If you want to plot a given marker at the point, for instance a circle, replace the last line of my code plt.text...... with plt.plot(lats,lons,'o') for a circle, or plt.plot(lats,lons,'s') for a square. Refer to Plot for more information on the markers you can use. You are getting the error because you have a delimiter different than a single space, so it isn't splitting the line. Replace ' ' in the split command with your whitespace delimiter. Is it a tab? Then you want '\t' . Good luck, Ian ---- Ian Bell Graduate Research Assistant Herrick Labs Purdue University email: ib...@pu... cell: (607)227-7626 On Tue, Apr 19, 2011 at 7:14 PM, Michael Rawlins <raw...@ya...> wrote: Yes, there is whitespace between each lat and lon on each line. But, actually, I'd simply like to plot a dot at each location. The '1' was there in my example because I do not yet know how to plot a particular symbol. Here is what I got when I tried the code you just suggested. Traceback (most recent call last): File "test.py", line 319, in <module> (lat,lon)=line.strip().split(' ') ValueError: too many values to unpack There are 203 records in the data file. Line 319 of test.py is this: (lat,lon)=line.strip().split(' ') --- On Tue, 4/19/11, Ian Bell <ib...@pu...> wrote: From: Ian Bell <ib...@pu...> Subject: Re: [Matplotlib-users] plotting points/locations from data file To: "Michael Rawlins" <raw...@ya...> Cc: Mat...@li... Date: Tuesday, April 19, 2011, 6:52 PM To clarify, you are trying to read in a set of (lat,lon) points in a file that is space delimited, store the data, and then put a text marker at each point, with each point numbered in order? The critical part is that you want to use a list (or numpy array) instead of a dictionary. Something like this ought to do (don't have MPL on this computer though - pretty sure this should work): lines=open('file.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.text(lats[i],lon[i],str(i+1),ha='center',va='center',color='white') I'm sure there are a bunch of more compact ways to do this, but this should work. Ian ---- Ian Bell Graduate Research Assistant Herrick Labs Purdue University email: ib...@pu... cell: (607)227-7626 On Tue, Apr 19, 2011 at 4:09 PM, Michael Rawlins <raw...@ya...> wrote: I'm trying to plot a series of points/locations on a map. I'm reading the latitudes and longitudes from a file, with each lat, lon pair on each record (line). Here is the code: def make_float(line): lati, longi = line.split() return float(lati), float(longi) my_dict = {} with open("file.txt") as f: for item in f: lati,longi = make_float(item) my_dict[lati] = longi xpt,ypt = m(-76.1670,39.4670 ) plt.text(xpt,ypt,'1',color='white') #print my_dict The matplotlib code which I've previously used to plot a single point on the map is below, with longitude and latitude in ( ): xpt,ypt = m(-70.758392,42.960445) plt.text(xpt,ypt,'1',color='white') When replacing (-70.758392,42.960445) with (longi,lati), the code plots only a single '1' at the location of just the last coordinate pair in the file. So now I only need to plot them all. Does the code I've implemented have an implicit loop to it? Mike ------------------------------------------------------------------------------ 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 Mat...@li... https://lists.sourceforge.net/lists/listinfo/matplotlib-users |