Jeff,

The map object is from the Basemap type, the only different thing is the
Lon,Lat and Val objects which are from the type array instead of lists

Anyway, solutions are slowly showing themselves and I thank you all

Have a nice day

Antoine De Pauw
Collaborateur de recherches, Informatique - Research collaborator, IT
Laboratoire de chimie quantique et photophysique - Quantum chemistry and
photophysics laboratory
Université Libre de Bruxelles - ULB


-----Original Message-----
From: Jeff Whitaker [mailto:[EMAIL PROTECTED] 
Sent: jeudi 11 septembre 2008 15:29
To: De Pauw Antoine
Cc: 'Matplotlib Users'
Subject: Re: [Matplotlib-users] Information request

De Pauw Antoine wrote:
> Thanks Jeff,
>
> This seems to work with csv file types, and I've been experimenting a bit
> with it
>
> However, when I try to implement this with my original code (with binary
> files), I get an error like that one:
>
> Traceback (most recent call last):
>   File "C:\Python25\Projects\FigPlot\FigPlot.py", line 39, in <module>
>     x,y = map(Lon,Lat)
> TypeError: 'numpy.ndarray' object is not callable
>
> I think this is coming from the fact I use array objects to store
values...
> could you confirm it?
>   

Antoine:  It looks like you the object map is not a Basemap instance, 
but a numpy array.  Try putting 'print type(map)' just ahead of this 
statement to verify this. I suspect your re-using the name 'map' in your 
code,  overwriting the Basemap class instance.

-Jeff
> Also, I'll see if it is possible to invert color scale and mask everything
> under a certain value
>
> Thanks very much for your help!
>
> Antoine De Pauw
> Collaborateur de recherches, Informatique - Research collaborator, IT
> Laboratoire de chimie quantique et photophysique - Quantum chemistry and
> photophysics laboratory
> Université Libre de Bruxelles - ULB
>
>
> -----Original Message-----
> From: Jeff Whitaker [mailto:[EMAIL PROTECTED] 
> Sent: jeudi 11 septembre 2008 14:10
> To: De Pauw Antoine
> Cc: 'Matplotlib Users'
> Subject: Re: [Matplotlib-users] Information request
>
> De Pauw Antoine wrote:
>   
>> Hi Jeff,
>>
>> I have put the code online with a sample of the data here:
>>
>> http://snipplr.com/view/8307/map-plotting-python-code-temporary/
>>
>> I hope you'll be able to give me some advice as it is quite difficult for
>> someone new in python and scientific computation
>>
>> Antoine De Pauw
>> Collaborateur de recherches, Informatique - Research collaborator, IT
>> Laboratoire de chimie quantique et photophysique - Quantum chemistry and
>> photophysics laboratory
>> Université Libre de Bruxelles - ULB
>>   
>>     
>
> Antoine: I may have the size of the pixels wrong, and lat/lon 
> transposed, but this is the general idea:
>
> from mpl_toolkits.basemap import Basemap
> import matplotlib.pyplot as plt
> import numpy as np
> lats = []; lons = []; data = []
> for line in open('pixels.dat'):
>     linesplit = line.split(',')
>     lons.append(float(linesplit[1]))
>     lats.append(float(linesplit[0]))
>     data.append(float(linesplit[2]))
> map = 
> Basemap(projection='mill',llcrnrlat=min(lats)-5,urcrnrlat=max(lats)+5,\
>                           
> urcrnrlon=max(lons)+5,llcrnrlon=min(lons)-5,resolution='l')
> x,y = map(lons,lats)
> plt.scatter(x,y,s=25,c=data,marker='s',edgecolor="None",cmap=plt.cm.jet)
> plt.colorbar(shrink=0.6)
> map.drawcoastlines()
> plt.show()
>
> -Jeff
>
>   
>> -----Original Message-----
>> From: Jeff Whitaker [mailto:[EMAIL PROTECTED] 
>> Sent: mercredi 10 septembre 2008 16:45
>> To: Antoine De Pauw
>> Cc: Matplotlib Users
>> Subject: Re: Information request
>>
>> Antoine De Pauw wrote:
>>   
>>     
>>> Thanks Jeff,
>>>
>>> In fact my points are arranged in three unsorted arrays, with a simple
>>>     
>>>       
>> scheme (thats why I couldn't plot them with imshow and others)
>>   
>>     
>>> arrays:
>>>
>>> [lat][lon][val]
>>> [-10][ 17][0.3]
>>> [ 37][ 23][3.7]
>>>  ...  ...  ...
>>>
>>> and so for many rows...
>>>
>>> what I have to do is looping through my arrays like that
>>>
>>> while i < rowcount:
>>>     plot_to_map(lat[i],lon[i],val[i])
>>>
>>> it is evidently an idea of how it could be done easily but my knowledge
>>>       
> of
>   
>>>     
>>>       
>> these libraries is too weak for me to figure out how to do it
>>   
>>     
>>> my data comes from huge binary files but is extremely simple, so it
would
>>>     
>>>       
>> be really easy for anyone to help me as the problem itself is how to put
>> unsorted points on the map with latitude and longitude coordinates
>>   
>>
>> Antoine:  You haven't said if your data forms a rectangular array.  If 
>> so, you can build a 2-d array from the input file and plot it with 
>> imshow.  If not, you can still plug the elements into a 2-d masked 
>> array, leaving the missing pixels masked.  You say the points are 
>> 'unsorted', does that mean they are randomly distributed and do not form 
>> a rectangular grid?
>>
>> It would really be much easier to help if you gave us more information, 
>> such as how the data is structured, what the pixel footprint is, etc. 
>> Perhaps you could post the binary file on an ftp site somewhere with 
>> code to read it.
>>
>> Also, please hit 'reply all' when replying, so the matplotlib users 
>> mailing list is CC'ed.
>>
>> -Jeff
>>   
>>     
>>>> Antoine De Pauw wrote:
>>>>       
>>>>         
>>>>> Sir,
>>>>>
>>>>> I'm sorry, as english is not my mothertongue and it is sometimes
>>>>>         
>>>>>           
>> difficult to be understandable.
>>   
>>     
>>>>> All is in the script I gave to you initially, except the point drawing
>>>>>         
>>>>>           
>> code which would be useless as it is proven not to work (I dont know the
>> method to do it).
>>   
>>     
>>>>> What I have is a map, and a set of pixels I have to put on it with
>>>>>         
>>>>>           
>> geographic coordinates.
>>   
>>     
>>>>> I cannot find the right method to put colour pixels on the map, that's
>>>>>         
>>>>>           
>> the problem.
>>   
>>     
>>>>> I have that map in miller projection, and three arrays containing
>>>>>         
>>>>>           
>> respectively latitude, longitude and satellite measured value.
>>   
>>     
>>>>> What I need to obtain is something approximately like this:
>>>>>         
>>>>>           
>
http://www.oma.be/BIRA-IASB/Molecules/SO2archive/info/background/so2sc200703
>   
>> _00_lr.gif but with the basemap toolkit.
>>   
>>     
>>>>> So, my question is: how could I do to plot a coloured pixel at
>>>>>         
>>>>>           
>> coordinates lat:lon on that map? If I have just the method to project a
>> geographic coordinate on the map and put a coloured pixel at the right
>> place, all is done and I just have to loop my arrays... Also, I would
have
>> to implement some antialiasing on the map.
>>   
>>     
>>>>>   
>>>>>         
>>>>>           
>>>> Antoine:
>>>>
>>>> Are the pixels arranged on a regular grid - or are they randomly 
>>>> distributed?  If they are on a grid, it's easy (using pcolor or
imshow).
>>>>         
>
>   
>>>> If you could send me your data I may be able to get you started.
>>>>
>>>> (I'm cc'ing the matplotlib list so others can join in the discussion).
>>>>
>>>>
>>>> -Jeff
>>>>       
>>>>         
>>>>> If this is not possible to do it in a simple and explainable way,
>>>>>           
> please
>   
>>>>>         
>>>>>           
>> tell me and I'll continue using matlab or searching for the bit of code
>> which will save me
>>   
>>     
>>>>> Anyway, I have to thank you for your interest to help me..
>>>>>
>>>>> Many thanks,
>>>>>
>>>>> Antoine De Pauw
>>>>>
>>>>>   
>>>>>         
>>>>>           
>>>>>> Antoine De Pauw wrote:
>>>>>>     
>>>>>>           
>>>>>>             
>>>>>>> Hi, and thanks for the answer
>>>>>>>
>>>>>>> In fact, what I do is reading a binary file to obtain 3 arrays
>>>>>>>             
>>>>>>>               
>> (Lat,Lon,Val) describing geographic points which are associated by index
>> (like point 1 is Lat[0]:Lon[0] with value Val[0])
>>   
>>     
>>>>>>> What I need to do is to plot some points on the map (miller
>>>>>>>               
> projection
>   
>>>>>>>             
>>>>>>>               
>> for most) based on latitude and longitude, to obtain a colour map (points
>> are unordered, it is from IASI satellite computations)
>>   
>>     
>>>>>>> I'm able to create a map, draw simple things on it, etc but the
>>>>>>>             
>>>>>>>               
>> problem I have is any method I try for plotting points is failing, either
>> pcolor, pcolormesh, imshow, etc.
>>   
>>     
>>>>>>> When I found your post on that mailing list, I figured out that you
>>>>>>>             
>>>>>>>               
>> might have the experience and skills to easily explain to me how to
>> manipulate these points and plot them on the map, as there's like no help
>>     
> on
>   
>> the web except standard examples...
>>   
>>     
>>>>>>> Please tell me if this is possible for you to give me some tips, or
>>>>>>>               
> if
>   
>>>>>>>             
>>>>>>>               
>> it takes too much of your time just advice me some lectures
>>   
>>     
>>>>>>> Best regards,
>>>>>>>
>>>>>>> De Pauw Antoine
>>>>>>>   
>>>>>>>       
>>>>>>>             
>>>>>>>               
>>>>>> Antoine:  It would really help to have a script demonstrating your 
>>>>>> problem.  It sounds to me like you want to plot markers representing
a
>>>>>>             
>
>   
>>>>>> set of points - for that you should use the scatter method.  pcolor, 
>>>>>> pcolormesh and friends are for plotting gridded data.
>>>>>>
>>>>>> -Jeff
>>>>>>     
>>>>>>           
>>>>>>             
>>>>>>>   
>>>>>>>       
>>>>>>>             
>>>>>>>               
>>>>>>>> De Pauw Antoine wrote:
>>>>>>>>     
>>>>>>>>         
>>>>>>>>               
>>>>>>>>                 
>>>>>>>>> Dear sir,
>>>>>>>>>
>>>>>>>>>  
>>>>>>>>>
>>>>>>>>> I&#8217;m currently trying to improve our plotting tools here at
>>>>>>>>>                   
> the
>   
>>>>>>>>>                 
>>>>>>>>>                   
>> &#8220;Quantum 
>>   
>>     
>>>>>>>>> Chemistry and Photophysics&#8221; section of the Université Libre
>>>>>>>>>                   
> de
>   
>>>>>>>>>                 
>>>>>>>>>                   
>>   
>>     
>>>>>>>>> Bruxelles, and I ran, after many time passed at searching for a 
>>>>>>>>> solution, on an explanation from you here: 
>>>>>>>>>
>>>>>>>>>                 
>>>>>>>>>                   
>> http://www.nabble.com/Re:-matplotlib-basemap-question-tt17759370.html
>>   
>>     
>>>>>>>>>  
>>>>>>>>>
>>>>>>>>> It seems that you could help me find a solution, as I cannot plot
>>>>>>>>>                 
>>>>>>>>>                   
>> any 
>>   
>>     
>>>>>>>>> points on maps.
>>>>>>>>>
>>>>>>>>>  
>>>>>>>>>
>>>>>>>>> Could you please tell me what I could do to plot data in a simple
>>>>>>>>>                 
>>>>>>>>>                   
>> way, 
>>   
>>     
>>>>>>>>> assuming I have 3 unordered arrays containing respectively
>>>>>>>>>                   
> latitude,
>   
>>>>>>>>>                 
>>>>>>>>>                   
>>   
>>     
>>>>>>>>> longitude and values to plot?
>>>>>>>>>
>>>>>>>>>  
>>>>>>>>>
>>>>>>>>> Some tips would be very nice from you as any method I have tried
so
>>>>>>>>>                 
>>>>>>>>>                   
>> far 
>>   
>>     
>>>>>>>>> give me some errors&#8230;
>>>>>>>>>
>>>>>>>>>  
>>>>>>>>>
>>>>>>>>> Thank you very much in advance,
>>>>>>>>>
>>>>>>>>>  
>>>>>>>>>
>>>>>>>>> Best regards,
>>>>>>>>>
>>>>>>>>>  
>>>>>>>>>
>>>>>>>>> PS: I give you the code I&#8217;m using currently, missing the
>>>>>>>>>                 
>>>>>>>>>                   
>> plotting part
>>   
>>     
>>>>>>>>>  
>>>>>>>>>
>>>>>>>>> from mpl_toolkits.basemap import Basemap
>>>>>>>>>
>>>>>>>>> from numpy import *
>>>>>>>>>
>>>>>>>>> from scipy.io.numpyio import fread
>>>>>>>>>
>>>>>>>>> import matplotlib.pyplot as plt
>>>>>>>>>
>>>>>>>>> import numpy as np
>>>>>>>>>
>>>>>>>>> import os
>>>>>>>>>
>>>>>>>>> import sys
>>>>>>>>>
>>>>>>>>> import array
>>>>>>>>>
>>>>>>>>>  
>>>>>>>>>
>>>>>>>>> fileName="c:/20080821.b56"
>>>>>>>>>
>>>>>>>>>  
>>>>>>>>>
>>>>>>>>> print('preparing map')   
>>>>>>>>>
>>>>>>>>> map = 
>>>>>>>>>
>>>>>>>>>                 
>>>>>>>>>                   
>
Basemap(projection='mill',lat_0=0,lon_0=0,resolution='i',area_thresh=30000.)
>   
>>   
>>     
>>>>>>>>> map.drawcoastlines(0.5,antialiased=1)
>>>>>>>>>
>>>>>>>>> map.drawmapboundary()
>>>>>>>>>
>>>>>>>>> #map.drawmeridians(np.arange(-180,180,60),linewidth=0.5, 
>>>>>>>>> labels=np.arange(-180,180,60), labelstyle="+/-")
>>>>>>>>>
>>>>>>>>> #map.drawparallels(np.arange(-90,90,30), linewidth=0.5, 
>>>>>>>>> labels=np.arange(-180,180,30), labelstyle="+/-")
>>>>>>>>>
>>>>>>>>> print('reading binary data')
>>>>>>>>>
>>>>>>>>> nbreligne=long(os.stat(fileName)[6])/(8*int(fileName[-2:]))
>>>>>>>>>
>>>>>>>>> Lat=zeros(nbreligne)
>>>>>>>>>
>>>>>>>>> Lon=zeros(nbreligne)
>>>>>>>>>
>>>>>>>>> Val=zeros(nbreligne)
>>>>>>>>>
>>>>>>>>> rawfile=fromfile(open(fileName,'rb'),'d',-1)       
>>>>>>>>>
>>>>>>>>> Lat=rawfile[0:nbreligne]
>>>>>>>>>
>>>>>>>>> Lon=rawfile[nbreligne:nbreligne*2]
>>>>>>>>>
>>>>>>>>> Val=rawfile[nbreligne*21:nbreligne*22]
>>>>>>>>>
>>>>>>>>> print('shifting latitudes and projecting to map')
>>>>>>>>>
>>>>>>>>> i=0
>>>>>>>>>
>>>>>>>>> while i < nbreligne:
>>>>>>>>>
>>>>>>>>>     if(Lon[i]>180):
>>>>>>>>>
>>>>>>>>>         print(Lon[i])
>>>>>>>>>
>>>>>>>>>         Lon[i]-=360
>>>>>>>>>
>>>>>>>>>         print(Lon[i])
>>>>>>>>>
>>>>>>>>>     i+=1
>>>>>>>>>
>>>>>>>>> print('plotting data')
>>>>>>>>>
>>>>>>>>>  
>>>>>>>>>
>>>>>>>>> #plotting code comes here
>>>>>>>>>       
>>>>>>>>>           
>>>>>>>>>                 
>>>>>>>>>                   
>>>>>>>> Antoine:  If you send me a self-contained script that produces the 
>>>>>>>> problem you see, I can help you debug it.  As it stands now, I have
>>>>>>>>               
>>>>>>>>                 
>> very 
>>   
>>     
>>>>>>>> little to work with - it could be your plotting commands, or it
>>>>>>>>                 
> could
>   
>>>>>>>>               
>>>>>>>>                 
>> be 
>>   
>>     
>>>>>>>> your data.
>>>>>>>>
>>>>>>>> -Jeff
>>>>>>>>     
>>>>>>>>         
>>>>>>>>               
>>>>>>>>                 
>>>>>>>>>  
>>>>>>>>>
>>>>>>>>> print('saving map')       
>>>>>>>>>
>>>>>>>>> plt.savefig("testfig.png",dpi=600)
>>>>>>>>>
>>>>>>>>> print('done')
>>>>>>>>>
>>>>>>>>>  
>>>>>>>>>
>>>>>>>>> *Antoine De Pauw*
>>>>>>>>> Collaborateur de recherches, Informatique - Research collaborator,
>>>>>>>>>                 
>>>>>>>>>                   
>> IT
>>   
>>     
>>>>>>>>> Laboratoire de chimie quantique et photophysique - Quantum
>>>>>>>>>                   
> chemistry
>   
>>>>>>>>>                 
>>>>>>>>>                   
>> and 
>>   
>>     
>>>>>>>>> photophysics laboratory
>>>>>>>>> *Université Libre de Bruxelles - ULB <http://ww.ulb.ac.be/>*
>>>>>>>>>
>>>>>>>>>  
>>>>>>>>>
>>>>>>>>>       
>>>>>>>>>           
>>>>>>>>>                 
>>>>>>>>>                   
>>>>>>>> -- 
>>>>>>>> Jeffrey S. Whitaker         Phone  : (303)497-6313
>>>>>>>> Meteorologist               FAX    : (303)497-6449
>>>>>>>> NOAA/OAR/PSD  R/PSD1        Email  : [EMAIL PROTECTED]
>>>>>>>> 325 Broadway                Office : Skaggs Research Cntr 1D-113
>>>>>>>> Boulder, CO, USA 80303-3328 Web    : http://tinyurl.com/5telg
>>>>>>>>
>>>>>>>>
>>>>>>>>     
>>>>>>>>         
>>>>>>>>               
>>>>>>>>                 
>>>>>>>   
>>>>>>>       
>>>>>>>             
>>>>>>>               
>>>>>> -- 
>>>>>> Jeffrey S. Whitaker         Phone : (303)497-6313
>>>>>> NOAA/OAR/CDC  R/PSD1        FAX   : (303)497-6449
>>>>>> 325 Broadway                Boulder, CO, USA 80305-3328
>>>>>>
>>>>>>
>>>>>>
>>>>>>     
>>>>>>           
>>>>>>             
>>>>>   
>>>>>         
>>>>>           
>>>> -- 
>>>> Jeffrey S. Whitaker         Phone : (303)497-6313
>>>> NOAA/OAR/CDC  R/PSD1        FAX   : (303)497-6449
>>>> 325 Broadway                Boulder, CO, USA 80305-3328
>>>>
>>>>
>>>>
>>>>       
>>>>         
>>>     
>>>       
>>   
>>     
>
>
>   


-- 
Jeffrey S. Whitaker         Phone : (303)497-6313
NOAA/OAR/CDC  R/PSD1        FAX   : (303)497-6449
325 Broadway                Boulder, CO, USA 80305-3328


-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to