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_anton@...>:
>>>>>
>>>>>
>>>>>
>>>>>> 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@...
>>>> https://lists.sourceforge.net/lists/listinfo/matplotlib-users
>>>>
>>>>
>>>>
>>>>
>>>
>>>
>> ------------------------------------------------------------------------------
>> _______________________________________________
>> Matplotlib-users mailing list
>> Matplotlib-users@...
>> https://lists.sourceforge.net/lists/listinfo/matplotlib-users
>>
>>
>>
>
>
|