antonv wrote:
> Hey Jeff,
>
> I've got it sorted out a bit now. You're right the data was an output from
> Degrib and I had the option to output the csv's with or without data in the
> land areas. As before I was using a program that was placing the pixels in
> an image based on the X and Y columns it didn't create an issue. That was an
> easy fix by switching the option in the Degrib export.
>
> Also by looking at your example I realized the way the contourf function
> requests the Z data and by just reshaping the array I was able to make all
> the stuff work properly. Numpy is amazing by the way! I had no idea how easy
> you can work with huge arrays!
>
> My new issue is that I need to mask the land areas in the Z array so I would
> have a clean plot over the basemap. Any ideas on how to achieve that?
>   

Create a masked array.  Say the values in the Z array set to 1.e30 over 
land areas in the CSV file.

from numpy import ma
Z = ma.masked_values(Z,1.e30)

Then plot with contourf as before and the land areas will not be contoured.

-Jeff
> Thanks,
> Anton
>
>
> Jeff Whitaker wrote:
>   
>> antonv wrote:
>>     
>>> It seems that I just cannot grasp the way the data needs to be formatted
>>> for
>>> this to work...
>>> I've used the griddata sample that James posted but it takes about 10
>>> minutes to prep the data for plotting so that solution seems to be out of
>>> discussion.
>>>
>>> I guess my issue is that I don't know what type of data is required by
>>> contourf function. Also as Jeff was saying earlier, the data is read from
>>> a
>>> grib file so supposedly it's already gridded. I've also looked at the
>>> basemap demo
>>> (http://matplotlib.sourceforge.net/users/screenshots.html#basemap-demo)
>>> and
>>> the data is read from 3 files, one for Lat one for Long and the Last for
>>> Z
>>> Data. Is there a way to automatically extract the data from the grib file
>>> to
>>> a format similar to the one used in the basemap example?
>>>   
>>>       
>> Anton: I just looked at your csv file and I think I know what the 
>> problem is.  Whatever program you used to dump the grib data did not 
>> write all the data - the missing land values were skipped.  That means 
>> you don't have the full rectangular array of data.  I think you have two 
>> choices:
>>
>> 1) insert the missing land values into the array, either in the csv file 
>> or into the array after it is read in from the csv file.  What program 
>> did you use to dump the GRIB data to a CSV file?
>>
>> 2) use a python grib interface.  If you're on Windows, PyNIO won't 
>> work.  I've written my own module (pygrib2 - 
>> http://code.google.com/p/pygrib2) which you should be able to compile on 
>> windows.  You'll need the png and jasper (jpeg2000) libraries, however.
>>
>> I recommend (2) - in the time you've already spent messing with that csv 
>> file, you could have already gotten a real python grib reader working!
>>
>> -Jeff
>>     
>>> Jeff Whitaker wrote:
>>>   
>>>       
>>>> Mauro Cavalcanti wrote:
>>>>     
>>>>         
>>>>> Dear Anton,
>>>>>
>>>>> 2008/12/23 antonv <vasilescu_an...@yahoo.com>:
>>>>>   
>>>>>       
>>>>>           
>>>>>>  Also, because I figured out the data I need and already have the
>>>>>> scripts in place
>>>>>> to extract the CSV files I would really like to keep it that way.
>>>>>> Would
>>>>>> it be possible to
>>>>>> just show me how to get from the csv file to the plot?
>>>>>>     
>>>>>>         
>>>>>>             
>>>>> Here is a short recipe:
>>>>>
>>>>> import numpy as np
>>>>>
>>>>> f = open("file.csv", "r")
>>>>> coords = np.loadtxt(f, delimiter=",", skiprows=1)
>>>>> lon = coords[:,0]
>>>>> lat = coords[:,1]
>>>>> dat = coords[:,2]
>>>>>
>>>>> where "file.csv" is a regular comma-separated values file in the
>>>>> format:
>>>>>
>>>>> Lat,Lon,Dat
>>>>> -61.05,10.4,20
>>>>> -79.43,9.15,50
>>>>> -70.66,9.53,10
>>>>> -63.11,7.91,40
>>>>> ...
>>>>>
>>>>> Hope this helps!
>>>>>
>>>>> Best regards,
>>>>>
>>>>>   
>>>>>       
>>>>>           
>>>> Since the arrays are 2D (for gridded data), a reshape is also needed,
>>>> i.e.
>>>>
>>>> lon.shape = (nlats,nlons)
>>>> lat.shape = (nlats,nlons)
>>>> data.shape = (nlats,nlons)
>>>>
>>>> You'll  need to know what the grid dimensons (nlats,nlons) are.
>>>>
>>>> -Jeff
>>>>
>>>> ------------------------------------------------------------------------------
>>>> _______________________________________________
>>>> Matplotlib-users mailing list
>>>> Matplotlib-users@lists.sourceforge.net
>>>> https://lists.sourceforge.net/lists/listinfo/matplotlib-users
>>>>
>>>>
>>>>     
>>>>         
>>>   
>>>       
>> ------------------------------------------------------------------------------
>> _______________________________________________
>> Matplotlib-users mailing list
>> Matplotlib-users@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/matplotlib-users
>>
>>
>>     
>
>   


------------------------------------------------------------------------------
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to