On 10/19/2010 05:44 AM, vaishu wrote:
>
> Hey guys,
>
> I am a new user to the python&  matplotlib, this might be a simple question
> but I searched the internet for hours and couldn't find a solution for this.
>
> I am plotting precipitation data from which is in the NetCDF format. What I
> find weird is that, the data doesn't have any negative values in it.(I
> checked that many times,just to make sure). But the value in the colorbar
> starts with a negative value (like -0.0000312 etc). It doesnt make sense
> because I dont do any manipulations to the data, other that just selecting a
> part of the data from the big file and plotting it.
>
> So my code doesn't much to it. Here is the code:
>
> from mpl_toolkits.basemap import Basemap
> import numpy as np
> import matplotlib.pyplot as plt
> from netCDF4 import Dataset
> cd progs
> f=Dataset('V21_GPCP.1979-2009.nc')
> lats=f.variables['lat'][:]
> lons=f.variables['lon'][:]
> prec=f.variables['PREC'][:]
> la=lats[31:52]
> lo=lons[18:83]
> pre=prec[0,31:52,18:83]
> m = Basemap(width=06.e6,height=05.e6,projection='gnom',lat_0=15.,lon_0=80.)
> x, y = m(*np.meshgrid(lo,la))
> m.drawcoastlines()
> m.drawmapboundary(fill_color='lightblue')
> m.drawparallels(np.arange(-90.,120.,5.),labels=[1,0,0,0])
> m.drawmeridians(np.arange(0.,420.,5.),labels=[0,0,0,1])
> cs=m.contourf(x,y,pre,50,cmap=plt.cm.jet)
> plt.colorbar()
>
> The output that I got for that code was a beautiful plot, with the colorbar
> starting from the value -0.00001893, and the rest are positive values, and I
> believe are correct. Its just the minimum value thats bugging me.
> http://old.nabble.com/file/p30001558/jan1979plot.png
>
> I would like to know:
>
> Is there anything wrong in my code? cos I know that the data is right.

I can't reproduce the problem without the data file; can you supply it?
Also, what version of matplotlib are you using?

> Is there a way to manually change the value to 0?
> Is it right for the values in the colorbar to change everytime we run the
> code, cos for the same data, the next time I run the code, the values go
> like this " -0.00001893, 2.00000000, 4.00000000, 6.00000000 etc"
> I want to customize them to "0.0, 2.0, 4.0, 6.0 etc"

In your call to contourf, instead of giving a number of levels, give a 
sequence of the desired levels, e.g.:

cs=m.contourf(x,y,pre,np.arange(0, 20, 0.5),cmap=plt.cm.jet)

Eric

>
>
> Thanks,
> Vaishu
>


------------------------------------------------------------------------------
Nokia and AT&T present the 2010 Calling All Innovators-North America contest
Create new apps & games for the Nokia N8 for consumers in  U.S. and Canada
$10 million total in prizes - $4M cash, 500 devices, nearly $6M in marketing
Develop with Nokia Qt SDK, Web Runtime, or Java and Publish to Ovi Store 
http://p.sf.net/sfu/nokia-dev2dev
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to