So my beginner saga continues with another question: I am trying to create a custom colormap using ListedColormap. The custom color map is for a range of values between 0 and 20 while the data in my file is between 0 and 8. Now my issue is that when plotting the graph the colormap is using the 0 to 8 values from the file. How can I force it to use all the 21 values in the colormap?
Thanks, Anton Jeff Whitaker wrote: > > 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 > > -- View this message in context: http://www.nabble.com/Plotting-NOAA-data...-tp21139727p21244624.html Sent from the matplotlib - users mailing list archive at Nabble.com. ------------------------------------------------------------------------------ _______________________________________________ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users