You can subscribe to this list here.
2003 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(3) |
Jun
|
Jul
|
Aug
(12) |
Sep
(12) |
Oct
(56) |
Nov
(65) |
Dec
(37) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2004 |
Jan
(59) |
Feb
(78) |
Mar
(153) |
Apr
(205) |
May
(184) |
Jun
(123) |
Jul
(171) |
Aug
(156) |
Sep
(190) |
Oct
(120) |
Nov
(154) |
Dec
(223) |
2005 |
Jan
(184) |
Feb
(267) |
Mar
(214) |
Apr
(286) |
May
(320) |
Jun
(299) |
Jul
(348) |
Aug
(283) |
Sep
(355) |
Oct
(293) |
Nov
(232) |
Dec
(203) |
2006 |
Jan
(352) |
Feb
(358) |
Mar
(403) |
Apr
(313) |
May
(165) |
Jun
(281) |
Jul
(316) |
Aug
(228) |
Sep
(279) |
Oct
(243) |
Nov
(315) |
Dec
(345) |
2007 |
Jan
(260) |
Feb
(323) |
Mar
(340) |
Apr
(319) |
May
(290) |
Jun
(296) |
Jul
(221) |
Aug
(292) |
Sep
(242) |
Oct
(248) |
Nov
(242) |
Dec
(332) |
2008 |
Jan
(312) |
Feb
(359) |
Mar
(454) |
Apr
(287) |
May
(340) |
Jun
(450) |
Jul
(403) |
Aug
(324) |
Sep
(349) |
Oct
(385) |
Nov
(363) |
Dec
(437) |
2009 |
Jan
(500) |
Feb
(301) |
Mar
(409) |
Apr
(486) |
May
(545) |
Jun
(391) |
Jul
(518) |
Aug
(497) |
Sep
(492) |
Oct
(429) |
Nov
(357) |
Dec
(310) |
2010 |
Jan
(371) |
Feb
(657) |
Mar
(519) |
Apr
(432) |
May
(312) |
Jun
(416) |
Jul
(477) |
Aug
(386) |
Sep
(419) |
Oct
(435) |
Nov
(320) |
Dec
(202) |
2011 |
Jan
(321) |
Feb
(413) |
Mar
(299) |
Apr
(215) |
May
(284) |
Jun
(203) |
Jul
(207) |
Aug
(314) |
Sep
(321) |
Oct
(259) |
Nov
(347) |
Dec
(209) |
2012 |
Jan
(322) |
Feb
(414) |
Mar
(377) |
Apr
(179) |
May
(173) |
Jun
(234) |
Jul
(295) |
Aug
(239) |
Sep
(276) |
Oct
(355) |
Nov
(144) |
Dec
(108) |
2013 |
Jan
(170) |
Feb
(89) |
Mar
(204) |
Apr
(133) |
May
(142) |
Jun
(89) |
Jul
(160) |
Aug
(180) |
Sep
(69) |
Oct
(136) |
Nov
(83) |
Dec
(32) |
2014 |
Jan
(71) |
Feb
(90) |
Mar
(161) |
Apr
(117) |
May
(78) |
Jun
(94) |
Jul
(60) |
Aug
(83) |
Sep
(102) |
Oct
(132) |
Nov
(154) |
Dec
(96) |
2015 |
Jan
(45) |
Feb
(138) |
Mar
(176) |
Apr
(132) |
May
(119) |
Jun
(124) |
Jul
(77) |
Aug
(31) |
Sep
(34) |
Oct
(22) |
Nov
(23) |
Dec
(9) |
2016 |
Jan
(26) |
Feb
(17) |
Mar
(10) |
Apr
(8) |
May
(4) |
Jun
(8) |
Jul
(6) |
Aug
(5) |
Sep
(9) |
Oct
(4) |
Nov
|
Dec
|
2017 |
Jan
(5) |
Feb
(7) |
Mar
(1) |
Apr
(5) |
May
|
Jun
(3) |
Jul
(6) |
Aug
(1) |
Sep
|
Oct
(2) |
Nov
(1) |
Dec
|
2018 |
Jan
|
Feb
|
Mar
|
Apr
(1) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2020 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2025 |
Jan
(1) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
|
|
|
|
|
1
(2) |
2
(6) |
3
|
4
(7) |
5
(10) |
6
(4) |
7
(17) |
8
(4) |
9
(1) |
10
(1) |
11
(19) |
12
(14) |
13
(8) |
14
(14) |
15
(9) |
16
(1) |
17
|
18
|
19
(8) |
20
(5) |
21
(7) |
22
(13) |
23
(1) |
24
|
25
(4) |
26
(2) |
27
(17) |
28
(13) |
29
(6) |
30
(6) |
31
(5) |
|
|
|
|
|
|
On Wed, Mar 6, 2013 at 2:00 PM, Clifford Lyon <cli...@gm...>wrote: > I wish to make a boxplot with data in this format: > > Value, Frequency > 0, 128329 > 1, 20390 > 2, 230 > 3, 32 > 4, 3 > > etc. Rather than expand this into a flat array, is there some way to pass > in weights for values? Some of the frequencies I'm working with are very > large, and so the resulting arrays would be huge. AFAIK, all the summary > statistics I need for the plot can be computed from data in this form. > > Boxplot, as it currently stands, wants the raw data. Some recently added features allow you to manually specify the median and it's confidence intervals, but nothing else. I've been meaning to submit a PR for boxplot where it's split into the public method and private drawing function that just takes a dictionary of the values (R does this, IIRC). That wouldn't directly help you in this situation, but you'd be one step closer. -paul
I wish to make a boxplot with data in this format: Value, Frequency 0, 128329 1, 20390 2, 230 3, 32 4, 3 etc. Rather than expand this into a flat array, is there some way to pass in weights for values? Some of the frequencies I'm working with are very large, and so the resulting arrays would be huge. AFAIK, all the summary statistics I need for the plot can be computed from data in this form. Thanks!
I am trying to use stacked and normed at the same time. I have thought about it - and I think it does make sense for what I want to do. Below is some code and a figure that demonstrate the problem. There are two histograms. Both use teh same data. Both are stacked. The top histogram uses normed=False. The bottom uses normed =True. Ideally, the histograms would be identical except for scaling on the y-axis. The histogram with normed=False looks OK. The left-half of the normed=True histogram looks OK. About half-way through the second distribution moves from the top of the bars to the bottom. At least that's the way it looks from eyeballing. Does anybody have a suggestion about how to get around this problem? Should I be reporting a bug somewhere? Thanks, Wayne Hajas ================== from numpy.random import normal,seed import matplotlib.pyplot as plt seed(100) x=normal(loc=0,scale=1,size=1000) y=normal(loc=1,scale=1,size=1000) bins=map(lambda i:-2.+5.*float(i)/float(50),range(51)) plt.close() plt.subplot(211) plt.hist([x,y],bins=bins,alpha=0.5, stacked=True,normed=False) plt.subplot(212) plt.hist([x,y],bins=bins,alpha=0.5, stacked=True,normed=True) plt.show() <http://matplotlib.1069221.n5.nabble.com/file/n40552/StackedProblem.png> -- View this message in context: http://matplotlib.1069221.n5.nabble.com/conflict-between-stacked-and-normed-in-hist-tp40552.html Sent from the matplotlib - users mailing list archive at Nabble.com.
On Tue, Mar 5, 2013 at 5:33 PM, Mahe <mah...@gm...> wrote: > > Benjamin Root <ben.root@...> writes: > > > > > On Tue, Feb 1, 2011 at 11:09 AM, Francesco Benincasa > <francesco.benincasa- > DuY...@pu...> wrote: > > > > Hi all, > > I'm using pygrads for plotting maps from netcdf files. > > I use the contourf method, but I'm not able to fill the region where > there are > > no value (there is the missing value -999) with a color. It seems to > ignore > > the set_bad method that I used to make the colormap. > > Any suggestions? > > Thank you very much in advance. > > -- > > | Francesco Benincasa > > > > > > Most likely, the issue is that set_bad is more for setting the color when > encountering masked values (through masked arrays). As a quick and dirty > way to > deal with it, try setting that color through the set_under() method.The > correct > way to do this is to use set_bad, but convert your numpy array that you > are > displaying into a masked array like so:z_ma = np.ma.masked_array(z, > mask=(z == > -999))and use contourf on z_ma.Let us know how that works for you.Ben Root > > > > > > > > > ------------------------------------------------------------------------------ > > Special Offer-- Download ArcSight Logger for FREE (a 49ドル USD value)! > > Finally, a world-class log management solution at an even better > price-free! > > Download using promo code Free_Logger_4_Dev2Dev. Offer expires > > February 28th, so secure your free ArcSight Logger TODAY! > > http://p.sf.net/sfu/arcsight-sfd2d > > > > _______________________________________________ > > Matplotlib-users mailing list > > Matplotlib-users@... > > https://lists.sourceforge.net/lists/listinfo/matplotlib-users > > > > Hi ! > I have had the same issue (set_bad not taking effect with nans), and > transformed > the data into a masked array. But it does not seem to work... > Here a minimal example: > > import matplotlib.pyplot as plt > import numpy as np > > plt.clf() > x = np.linspace(-180,180,100) > y = np.linspace(-90,90,100) > x, y = np.meshgrid(x,y) > data = np.cos(x/180*np.pi) + np.sin(y/180*np.pi) > data[(y<50)&(y>30)&(x<50)&(x>30)] = np.nan > data = np.ma.masked_array(data, mask = np.isnan(data)) # has no effect > ncol = 20 > cbar = [-1,1] > palette = plt.cm.Blues > palette.set_bad('green') > palette.set_over('red') > palette.set_under('black') > cs = plt.contourf(x,y,data,np.linspace(cbar[0],cbar[1],ncol), cmap=palette, > extend='both') > plt.colorbar() > cs.set_clim(cbar) # need that for set_upper and set_lower to take effect > plt.show() > > There is already that small bug where one needs to call set_clim for > set_upper > and set_lower, maybe something similar is needed for set_bad? > Any idea? > > Many thanks, > Mahe > > Your problem is very, very subtle, and we probably should handle this better. The issue is, I think, that because of the way contourf works, the colormap is applied to the list of polygon (or patch) collections, each having a value for its level. Because there wouldn't be a "nan" level, there is no polygon or patch at all for that spot. Indeed, if you change the background color of the plot, the white patch becomes whatever color the background is. I hope this clears it up for you. Ben Root
Benjamin Root <ben.root@...> writes: > > On Tue, Feb 1, 2011 at 11:09 AM, Francesco Benincasa <francesco.benincasa- DuY...@pu...> wrote: > > Hi all, > I'm using pygrads for plotting maps from netcdf files. > I use the contourf method, but I'm not able to fill the region where there are > no value (there is the missing value -999) with a color. It seems to ignore > the set_bad method that I used to make the colormap. > Any suggestions? > Thank you very much in advance. > -- > | Francesco Benincasa > > > Most likely, the issue is that set_bad is more for setting the color when encountering masked values (through masked arrays). As a quick and dirty way to deal with it, try setting that color through the set_under() method.The correct way to do this is to use set_bad, but convert your numpy array that you are displaying into a masked array like so:z_ma = np.ma.masked_array(z, mask=(z == -999))and use contourf on z_ma.Let us know how that works for you.Ben Root > > > > ------------------------------------------------------------------------------ > Special Offer-- Download ArcSight Logger for FREE (a 49ドル USD value)! > Finally, a world-class log management solution at an even better price-free! > Download using promo code Free_Logger_4_Dev2Dev. Offer expires > February 28th, so secure your free ArcSight Logger TODAY! > http://p.sf.net/sfu/arcsight-sfd2d > > _______________________________________________ > Matplotlib-users mailing list > Matplotlib-users@... > https://lists.sourceforge.net/lists/listinfo/matplotlib-users > Hi ! I have had the same issue (set_bad not taking effect with nans), and transformed the data into a masked array. But it does not seem to work... Here a minimal example: import matplotlib.pyplot as plt import numpy as np plt.clf() x = np.linspace(-180,180,100) y = np.linspace(-90,90,100) x, y = np.meshgrid(x,y) data = np.cos(x/180*np.pi) + np.sin(y/180*np.pi) data[(y<50)&(y>30)&(x<50)&(x>30)] = np.nan data = np.ma.masked_array(data, mask = np.isnan(data)) # has no effect ncol = 20 cbar = [-1,1] palette = plt.cm.Blues palette.set_bad('green') palette.set_over('red') palette.set_under('black') cs = plt.contourf(x,y,data,np.linspace(cbar[0],cbar[1],ncol), cmap=palette, extend='both') plt.colorbar() cs.set_clim(cbar) # need that for set_upper and set_lower to take effect plt.show() There is already that small bug where one needs to call set_clim for set_upper and set_lower, maybe something similar is needed for set_bad? Any idea? Many thanks, Mahe
Vineeth, I think that you are looking for from matplotlib.ticker import MaxNLocator -Sterling On Mar 3, 2013, at 5:38PM, vineeth wrote: > Hello, > > I have attached the histogram that I generated. When specifying large numbers like 1000 or more, the xticks tend to overlap and it gives a clumsy impression. Is there a way to avoid this?. What can be done to give gaps between the ticks?. Say in my case just show 3 to 4 ticks in x axis rather than specifying all the ticks. The following is my code: > > def plotHistogram(veh_no, value, vehicle_no, fig_no): > > font = {'family' : 'serif', > 'weight' : 'normal', > 'size' : 10} > rc('font', **font) > count = 1 > legends = [] > print veh_no > plt.figure(num=fig_no,dpi=105) > for i in range(len(value)): > ax = plt.subplot(2,2,i+1) > n, bins, patches = plt.hist(value[i],100,label=veh_no[i]) > plt.ylabel('frequency',position=(0.5,0.5)) > plt.xlabel('x valuels') > plt.grid() > min_val = int(round(min(value[i]),0)) > max_val = int(round(max(value[i]),0)) > ax.set_xlim(min_val-2,max_val+2) > locs,labels = plt.xticks() > plt.xticks(locs, map(lambda x: "%g" % x, locs)) > plt.savefig('figurename.eps',dpi=70) > count += 1 > > Thank You > Vineeth > <test_hist.eps>------------------------------------------------------------------------------ > Everyone hates slow websites. So do we. > Make your web apps faster with AppDynamics > Download AppDynamics Lite for free today: > http://p.sf.net/sfu/appdyn_d2d_feb_______________________________________________ > Matplotlib-users mailing list > Mat...@li... > https://lists.sourceforge.net/lists/listinfo/matplotlib-users
Matplotlib User (I'm not sure how to address you), I think that you are looking for either text() or annotate(). -Sterling On Mar 5, 2013, at 4:12AM, nittopuran natya wrote: > Hi, > > I have this script which gives output the image attached here. What I want is to give all the peak a number on top of the peak like 1 for first peak, 2 for second, 3 for third and so on. Could someone pls help me how to do that in python. > > The code: > > > from pylab import* > > # Read the file. > f2 = open('d012_SAXS-recomb.txt', 'r') > # read the whole file into a single variable, which is a list of every row of the file. > lines = f2.readlines()[2:-100] > f2.close() > > # initialize some variable to be lists: > x1 = [] > y1 = [] > > # scan the rows of the file stored in lines, and put the values into some variables: > for line in lines: > p = line.split() > x1.append(float(p[0])) > y1.append(float(p[1])) > > x = np.array(x1) > y = np.array(y1) > > xlim(0.0,4.0) > > # now, plot the data: > #subplot(211) > plt.plot(x, y, color='orange',linewidth=2.0, linestyle='-', label='Arabic - LPP''\nRoman - SPP''\nAsterisk - CHOL') > legend(loc='upper right') > xlabel('q') > ylabel('Intensity') > title('Cer2.Chol.Ffa7 (1.1.1)') > plt.show() > > > > /Tatiana > <d012_SAXS-recomb.txt><image.png>------------------------------------------------------------------------------ > Everyone hates slow websites. So do we. > Make your web apps faster with AppDynamics > Download AppDynamics Lite for free today: > http://p.sf.net/sfu/appdyn_d2d_feb_______________________________________________ > Matplotlib-users mailing list > Mat...@li... > https://lists.sourceforge.net/lists/listinfo/matplotlib-users
Sterling, Thank you, ya I got it working using MaxNLocator On Tue, Mar 5, 2013 at 12:49 PM, Sterling Smith <sm...@fu...>wrote: > Vineeth, > > I think that you are looking for > from matplotlib.ticker import MaxNLocator > > -Sterling > > On Mar 3, 2013, at 5:38PM, vineeth wrote: > > > Hello, > > > > I have attached the histogram that I generated. When specifying large > numbers like 1000 or more, the xticks tend to overlap and it gives a clumsy > impression. Is there a way to avoid this?. What can be done to give gaps > between the ticks?. Say in my case just show 3 to 4 ticks in x axis rather > than specifying all the ticks. The following is my code: > > > > def plotHistogram(veh_no, value, vehicle_no, fig_no): > > > > font = {'family' : 'serif', > > 'weight' : 'normal', > > 'size' : 10} > > rc('font', **font) > > count = 1 > > legends = [] > > print veh_no > > plt.figure(num=fig_no,dpi=105) > > for i in range(len(value)): > > ax = plt.subplot(2,2,i+1) > > n, bins, patches = plt.hist(value[i],100,label=veh_no[i]) > > plt.ylabel('frequency',position=(0.5,0.5)) > > plt.xlabel('x valuels') > > plt.grid() > > min_val = int(round(min(value[i]),0)) > > max_val = int(round(max(value[i]),0)) > > ax.set_xlim(min_val-2,max_val+2) > > locs,labels = plt.xticks() > > plt.xticks(locs, map(lambda x: "%g" % x, locs)) > > plt.savefig('figurename.eps',dpi=70) > > count += 1 > > > > Thank You > > Vineeth > > > <test_hist.eps>------------------------------------------------------------------------------ > > Everyone hates slow websites. So do we. > > Make your web apps faster with AppDynamics > > Download AppDynamics Lite for free today: > > > http://p.sf.net/sfu/appdyn_d2d_feb_______________________________________________ > > Matplotlib-users mailing list > > Mat...@li... > > https://lists.sourceforge.net/lists/listinfo/matplotlib-users > > -- Don't tell GOD how Big your storm is...TELL THE STORM HOW BIG YOUR GOD IS!!!
The University of Edinburgh is a charitable body, registered in Scotland, with registration number SC005336.
Thank you, > >1) There is a wide gap between label and the contours ie it appears like ------ 2.4 ......... is there a way to reduce this gap? Try inline=False for the clabel call, but that might over-do it. I tried this but it totally removes the space, the inline_space=n do not appear to take the given value and it works always with default value.. 2) The labels are appearing cluttered at about 100m depth though they culd have spread apart at each level. Is there a way to control their placing to avoid cluttering? This has been a long-standing issue with matplotlib. There has been improvements, but it still isn't perfect. I am not familiar with some of the newer tricks that are available. Hope some one tried those will respond! 3) Is there a way to make the longitude as in case of maps ie can the x axis labels be 50E 60E ... 90E You can set the tick formatter. Here is one example of how to do it. http://matplotlib.org/examples/pylab_examples/custom_ticker1.html Thank you I hope that helps! Ben Root
On Mon, Mar 4, 2013 at 8:26 PM, Sudheer Joseph <sud...@ya...>wrote: > Thanks to all Matplotlib experts for extending help, > With the suggestions I could make the script work and I am close to the > target I had in mind, > Below script produces as depth longitude contou-filled plot. > However I have below concerns, > 1) There is a wide gap between label and the contours ie it appears like > ------ 2.4 ......... is there a way to reduce this gap? > Try inline=False for the clabel call, but that might over-do it. > 2) The labels are appearing cluttered at about 100m depth though they culd > have spread apart at each level. Is there a way to control their placing to > avoid cluttering? > This has been a long-standing issue with matplotlib. There has been improvements, but it still isn't perfect. I am not familiar with some of the newer tricks that are available. > 3) Is there a way to make the longitude as in case of maps ie can the x > axis labels be 50E 60E ... 90E > You can set the tick formatter. Here is one example of how to do it. http://matplotlib.org/examples/pylab_examples/custom_ticker1.html I hope that helps! Ben Root
Hi, I have this script which gives output the image attached here. What I want is to give all the peak a number on top of the peak like 1 for first peak, 2 for second, 3 for third and so on. Could someone pls help me how to do that in python. The code: from pylab import* # Read the file. f2 = open('d012_SAXS-recomb.txt', 'r') # read the whole file into a single variable, which is a list of every row of the file. lines = f2.readlines()[2:-100] f2.close() # initialize some variable to be lists: x1 = [] y1 = [] # scan the rows of the file stored in lines, and put the values into some variables: for line in lines: p = line.split() x1.append(float(p[0])) y1.append(float(p[1])) x = np.array(x1) y = np.array(y1) xlim(0.0,4.0) # now, plot the data: #subplot(211) plt.plot(x, y, color='orange',linewidth=2.0, linestyle='-', label='Arabic - LPP''\nRoman - SPP''\nAsterisk - CHOL') legend(loc='upper right') xlabel('q') ylabel('Intensity') title('Cer2.Chol.Ffa7 (1.1.1)') plt.show() /Tatiana
Sounds like a nice feature if it doesn't already exist. At first glance, I'd say this was a good candidate for the "low-hanging fruit" label ( https://github.com/matplotlib/matplotlib/issues?labels=low+hanging+fruit&page=1&state=open) for which we have tickets which have a low matplotlib contribution experience barrier and a relatively good return on investment (in terms of time spent). Please feel free to create an issue on the github tracker & if you're keen, I'd encourage you to have a go at implementing it. Cheers, On 4 March 2013 19:34, Paul Hobson <pmh...@gm...> wrote: > > On Mon, Mar 4, 2013 at 11:23 AM, William Furnass <wi...@th...>wrote: > >> Several backends will show you the x and y float values that >> correspond to the current cursor position in a plot() but are there >> backends that show the _datetime_ corresponding to the x position if >> the plotted data is a time series (e.g. a pandas.Series object with a >> DatetimeIndex)? >> >> Regards, >> >> Will >> > > Will, > > You can use the `format_coord` method of the axes objects to do just this. > -paul > > > ------------------------------------------------------------------------------ > Everyone hates slow websites. So do we. > Make your web apps faster with AppDynamics > Download AppDynamics Lite for free today: > http://p.sf.net/sfu/appdyn_d2d_feb > _______________________________________________ > Matplotlib-users mailing list > Mat...@li... > https://lists.sourceforge.net/lists/listinfo/matplotlib-users > >
Thanks to all Matplotlib experts for extending help, With the suggestions I could make the script work and I am close to the target I had in mind, Below script produces as depth longitude contou-filled plot. However I have below concerns, 1) There is a wide gap between label and the contours ie it appears like ------ 2.4 ......... is there a way to reduce this gap? 2) The labels are appearing cluttered at about 100m depth though they culd have spread apart at each level. Is there a way to control their placing to avoid cluttering? 3) Is there a way to make the longitude as in case of maps ie can the x axis labels be 50E 60E ... 90E I am not sure if I am too much ambitious with regard to matplotlib, but I was using ferret where it takes care of the labeling. with best regards, Sudheer from matplotlib import pyplot as plt from netCDF4 import Dataset import numpy as np url='http://www.marine.csiro.au/dods/nph-dods/dods-data/climatology-netcdf/levitus_monthly_temp_98.nc' ds = Dataset(url) temp = ds.variables['TEMP'] lats = ds.variables['lat'] lons = ds.variables['lon'] depths = ds.variables['z'] # filter depths dmin = np.where(depths[:] == 0.)[0][0] dmax = np.where(depths[:] == 1000)[0][0] # filter all but one latitude lat_index = np.where(lats[:] == 0.5)[0][0] lats = lats[lat_index] # filter a range of longitudes lon_lower_index = np.where(lons[:] == 44.5)[0][0] lon_upper_index = np.where(lons[:] == 95.5)[0][0] lons = lons[lon_lower_index:lon_upper_index] depths=depths[dmin:dmax] temp = temp[0,dmin:dmax, lat_index, lon_lower_index:lon_upper_index] #plt.pcolormesh(lons,depths, temp) nx,ny=np.meshgrid(lons,depths) clevs=np.arange(temp.min(),temp.max()+2,temp.std()/5) norm = plt.cm.colors.Normalize(vmax=abs(temp).max(), vmin=-abs(temp).max()) cmap = plt.cm.gist_rainbow_r plt.figure() cs1=plt.contourf(nx,ny,temp, clevs,cmap=plt.cm.get_cmap(cmap, len(clevs)-1)) cs2=plt.contour(nx,ny,temp, cs1.levels,colors = 'k',linewidth=2,hold='on') plt.clabel(cs2,inline=True, fmt='%1.1f', fontsize=18) cb = plt.colorbar(cs1,pad=.02) #(location='right')#,size="5%", pad='2%') plt.gca().invert_yaxis() plt.show() *************************************************************** Sudheer Joseph Indian National Centre for Ocean Information Services Ministry of Earth Sciences, Govt. of India POST BOX NO: 21, IDA Jeedeemetla P.O. Via Pragathi Nagar,Kukatpally, Hyderabad; Pin:5000 55 Tel:+91-40-23886047(O),Fax:+91-40-23895011(O), Tel:+91-40-23044600(R),Tel:+91-40-9440832534(Mobile) E-mail:sjo...@gm...;sud...@ya... Web- http://oppamthadathil.tripod.com *************************************************************** ________________________________ From: Jody Klymak <jk...@uv...> To: Sudheer Joseph <sud...@ya...> Cc: "Mat...@li..." <mat...@li...> Sent: Tuesday, 5 March 2013 2:10 AM Subject: Re: [Matplotlib-users] depth longitude plot Hi Sudheer, You want contourf. http://matplotlib.org/examples/pylab_examples/contour_image.html Cheers, Jody On Mar 4, 2013, at 9:04 AM, Sudheer Joseph <sud...@ya...> wrote: Hi Benamin, >I was looking for a plot similar to the attached one named ferret.gif. But from matplot lib I get flat fill and contours which are not aligned to the levels ( named figure_1.png , it looks like matplotlib has just flat surfaces as it used pcolor. > > >with best regards, >Sudheer > > >From:Sudheer Joseph <sud...@ya...> > >To: Benjamin Root <ben...@ou...> >Cc: "Mat...@li..." <mat...@li...> >Sent: Monday, 4 March 2013 8:19 PM >Subject: Re: [Matplotlib-users] depth longitude plot > > >Thank you, > I just posted this question in numpy lists thinking that it is possible after regriding the data to new axes. >Thanks for the help. >with best regards, >Sudheer > >*************************************************************** >Sudheer Joseph >Indian National Centre for Ocean Information Services >Ministry of Earth Sciences, Govt. of India >POST BOX NO: 21, IDA Jeedeemetla P.O. >Via Pragathi Nagar,Kukatpally, Hyderabad; Pin:5000 55 >Tel:+91-40-23886047(O),Fax:+91-40-23895011(O), >Tel:+91-40-23044600(R),Tel:+91-40-9440832534(Mobile) >E-mail:sjo...@gm...;sud...@ya... >Web- http://oppamthadathil.tripod.com >*************************************************************** > > >________________________________ > From: Benjamin Root <ben...@ou...> >To: Sudheer Joseph <sud...@ya...> >Cc: Phil Elson <pel...@gm...>; "Mat...@li..." <mat...@li...> >Sent: Monday, 4 March 2013 7:53 PM >Subject: Re: [Matplotlib-users] depth longitude plot > > > > > >On Sat, Mar 2, 2013 at 6:35 AM, Sudheer Joseph <sud...@ya...> wrote: > >Hi Phil, >> >> >>Though iris looked to be promising it needed many other libraries, so I chose the below suggestion. But is there a way to overlay contours on this ? also is it possible to specify the levels? >>In [23]: plt.pcolormesh?? did not give much help >> >>with best regards, >>Sudheer > >You can overlay contours on the pcolormesh image by simply using the plt.contour() function after the pcolormesh() call. It allows you to control which levels to contour and you can specify the attributes of those contours like the color or thickness. Note that unlike Matlab, you don't have to call "hold on" between plots. By default, matplotlib will hold. > >I hope that helps! >Ben Root > > > >------------------------------------------------------------------------------ >Everyone hates slow websites. So do we. >Make your web apps faster with AppDynamics >Download AppDynamics Lite for free today: >http://p.sf.net/sfu/appdyn_d2d_feb >_______________________________________________ >Matplotlib-users mailing list >Mat...@li... >https://lists.sourceforge.net/lists/listinfo/matplotlib-users > > ><ferret.gif><figure_1.png>------------------------------------------------------------------------------ >Everyone hates slow websites. So do we. >Make your web apps faster with AppDynamics >Download AppDynamics Lite for free today: >http://p.sf.net/sfu/appdyn_d2d_feb_______________________________________________ >Matplotlib-users mailing list >Mat...@li... >https://lists.sourceforge.net/lists/listinfo/matplotlib-users > -- Jody Klymak http://web.uvic.ca/~jklymak/
Hi Sudheer, You want contourf. http://matplotlib.org/examples/pylab_examples/contour_image.html Cheers, Jody On Mar 4, 2013, at 9:04 AM, Sudheer Joseph <sud...@ya...> wrote: > Hi Benamin, > I was looking for a plot similar to the attached one named ferret.gif. But from matplot lib I get flat fill and contours which are not aligned to the levels ( named figure_1.png , it looks like matplotlib has just flat surfaces as it used pcolor. > > with best regards, > Sudheer > > From: Sudheer Joseph <sud...@ya...> > To: Benjamin Root <ben...@ou...> > Cc: "Mat...@li..." <mat...@li...> > Sent: Monday, 4 March 2013 8:19 PM > Subject: Re: [Matplotlib-users] depth longitude plot > > Thank you, > I just posted this question in numpy lists thinking that it is possible after regriding the data to new axes. > Thanks for the help. > with best regards, > Sudheer > > *************************************************************** > Sudheer Joseph > Indian National Centre for Ocean Information Services > Ministry of Earth Sciences, Govt. of India > POST BOX NO: 21, IDA Jeedeemetla P.O. > Via Pragathi Nagar,Kukatpally, Hyderabad; Pin:5000 55 > Tel:+91-40-23886047(O),Fax:+91-40-23895011(O), > Tel:+91-40-23044600(R),Tel:+91-40-9440832534(Mobile) > E-mail:sjo...@gm...;sud...@ya... > Web- http://oppamthadathil.tripod.com > *************************************************************** > From: Benjamin Root <ben...@ou...> > To: Sudheer Joseph <sud...@ya...> > Cc: Phil Elson <pel...@gm...>; "Mat...@li..." <mat...@li...> > Sent: Monday, 4 March 2013 7:53 PM > Subject: Re: [Matplotlib-users] depth longitude plot > > > > On Sat, Mar 2, 2013 at 6:35 AM, Sudheer Joseph <sud...@ya...> wrote: > Hi Phil, > > Though iris looked to be promising it needed many other libraries, so I chose the below suggestion. But is there a way to overlay contours on this ? also is it possible to specify the levels? > In [23]: plt.pcolormesh?? did not give much help > with best regards, > Sudheer > > You can overlay contours on the pcolormesh image by simply using the plt.contour() function after the pcolormesh() call. It allows you to control which levels to contour and you can specify the attributes of those contours like the color or thickness. Note that unlike Matlab, you don't have to call "hold on" between plots. By default, matplotlib will hold. > > I hope that helps! > Ben Root > > > > ------------------------------------------------------------------------------ > Everyone hates slow websites. So do we. > Make your web apps faster with AppDynamics > Download AppDynamics Lite for free today: > http://p.sf.net/sfu/appdyn_d2d_feb > _______________________________________________ > Matplotlib-users mailing list > Mat...@li... > https://lists.sourceforge.net/lists/listinfo/matplotlib-users > > > <ferret.gif><figure_1.png>------------------------------------------------------------------------------ > Everyone hates slow websites. So do we. > Make your web apps faster with AppDynamics > Download AppDynamics Lite for free today: > http://p.sf.net/sfu/appdyn_d2d_feb_______________________________________________ > Matplotlib-users mailing list > Mat...@li... > https://lists.sourceforge.net/lists/listinfo/matplotlib-users -- Jody Klymak http://web.uvic.ca/~jklymak/
On Mon, Mar 4, 2013 at 11:23 AM, William Furnass <wi...@th...>wrote: > Several backends will show you the x and y float values that > correspond to the current cursor position in a plot() but are there > backends that show the _datetime_ corresponding to the x position if > the plotted data is a time series (e.g. a pandas.Series object with a > DatetimeIndex)? > > Regards, > > Will > Will, You can use the `format_coord` method of the axes objects to do just this. -paul
Several backends will show you the x and y float values that correspond to the current cursor position in a plot() but are there backends that show the _datetime_ corresponding to the x position if the plotted data is a time series (e.g. a pandas.Series object with a DatetimeIndex)? Regards, Will
Hi Benamin, I was looking for a plot similar to the attached one named ferret.gif. But from matplot lib I get flat fill and contours which are not aligned to the levels ( named figure_1.png , it looks like matplotlib has just flat surfaces as it used pcolor. with best regards, Sudheer From:Sudheer Joseph <sud...@ya...> To: Benjamin Root <ben...@ou...> Cc: "Mat...@li..." <mat...@li...> Sent: Monday, 4 March 2013 8:19 PM Subject: Re: [Matplotlib-users] depth longitude plot Thank you, I just posted this question in numpy lists thinking that it is possible after regriding the data to new axes. Thanks for the help. with best regards, Sudheer *************************************************************** Sudheer Joseph Indian National Centre for Ocean Information Services Ministry of Earth Sciences, Govt. of India POST BOX NO: 21, IDA Jeedeemetla P.O. Via Pragathi Nagar,Kukatpally, Hyderabad; Pin:5000 55 Tel:+91-40-23886047(O),Fax:+91-40-23895011(O), Tel:+91-40-23044600(R),Tel:+91-40-9440832534(Mobile) E-mail:sjo...@gm...;sud...@ya... Web- http://oppamthadathil.tripod.com *************************************************************** ________________________________ From: Benjamin Root <ben...@ou...> To: Sudheer Joseph <sud...@ya...> Cc: Phil Elson <pel...@gm...>; "Mat...@li..." <mat...@li...> Sent: Monday, 4 March 2013 7:53 PM Subject: Re: [Matplotlib-users] depth longitude plot On Sat, Mar 2, 2013 at 6:35 AM, Sudheer Joseph <sud...@ya...> wrote: Hi Phil, > > >Though iris looked to be promising it needed many other libraries, so I chose the below suggestion. But is there a way to overlay contours on this ? also is it possible to specify the levels? >In [23]: plt.pcolormesh?? did not give much help > >with best regards, >Sudheer You can overlay contours on the pcolormesh image by simply using the plt.contour() function after the pcolormesh() call. It allows you to control which levels to contour and you can specify the attributes of those contours like the color or thickness. Note that unlike Matlab, you don't have to call "hold on" between plots. By default, matplotlib will hold. I hope that helps! Ben Root ------------------------------------------------------------------------------ Everyone hates slow websites. So do we. Make your web apps faster with AppDynamics Download AppDynamics Lite for free today: http://p.sf.net/sfu/appdyn_d2d_feb _______________________________________________ Matplotlib-users mailing list Mat...@li... https://lists.sourceforge.net/lists/listinfo/matplotlib-users
Thank you, I just posted this question in numpy lists thinking that it is possible after regriding the data to new axes. Thanks for the help. with best regards, Sudheer *************************************************************** Sudheer Joseph Indian National Centre for Ocean Information Services Ministry of Earth Sciences, Govt. of India POST BOX NO: 21, IDA Jeedeemetla P.O. Via Pragathi Nagar,Kukatpally, Hyderabad; Pin:5000 55 Tel:+91-40-23886047(O),Fax:+91-40-23895011(O), Tel:+91-40-23044600(R),Tel:+91-40-9440832534(Mobile) E-mail:sjo...@gm...;sud...@ya... Web- http://oppamthadathil.tripod.com *************************************************************** ________________________________ From: Benjamin Root <ben...@ou...> To: Sudheer Joseph <sud...@ya...> Cc: Phil Elson <pel...@gm...>; "Mat...@li..." <mat...@li...> Sent: Monday, 4 March 2013 7:53 PM Subject: Re: [Matplotlib-users] depth longitude plot On Sat, Mar 2, 2013 at 6:35 AM, Sudheer Joseph <sud...@ya...> wrote: Hi Phil, > > >Though iris looked to be promising it needed many other libraries, so I chose the below suggestion. But is there a way to overlay contours on this ? also is it possible to specify the levels? >In [23]: plt.pcolormesh?? did not give much help > >with best regards, >Sudheer You can overlay contours on the pcolormesh image by simply using the plt.contour() function after the pcolormesh() call. It allows you to control which levels to contour and you can specify the attributes of those contours like the color or thickness. Note that unlike Matlab, you don't have to call "hold on" between plots. By default, matplotlib will hold. I hope that helps! Ben Root
On Sat, Mar 2, 2013 at 6:35 AM, Sudheer Joseph <sud...@ya...>wrote: > Hi Phil, > > Though iris looked to be promising it needed many other libraries, so I > chose the below suggestion. But is there a way to overlay contours on this > ? also is it possible to specify the levels? > In [23]: plt.pcolormesh?? did not give much help > with best regards, > Sudheer > You can overlay contours on the pcolormesh image by simply using the plt.contour() function after the pcolormesh() call. It allows you to control which levels to contour and you can specify the attributes of those contours like the color or thickness. Note that unlike Matlab, you don't have to call "hold on" between plots. By default, matplotlib will hold. I hope that helps! Ben Root
Hello, I have attached the histogram that I generated. When specifying large numbers like 1000 or more, the xticks tend to overlap and it gives a clumsy impression. Is there a way to avoid this?. What can be done to give gaps between the ticks?. Say in my case just show 3 to 4 ticks in x axis rather than specifying all the ticks. The following is my code: def plotHistogram(veh_no, value, vehicle_no, fig_no): font = {'family' : 'serif', 'weight' : 'normal', 'size' : 10} rc('font', **font) count = 1 legends = [] print veh_no plt.figure(num=fig_no,dpi=105) for i in range(len(value)): ax = plt.subplot(2,2,i+1) n, bins, patches = plt.hist(value[i],100,label=veh_no[i]) plt.ylabel('frequency',position=(0.5,0.5)) plt.xlabel('x valuels') plt.grid() min_val = int(round(min(value[i]),0)) max_val = int(round(max(value[i]),0)) ax.set_xlim(min_val-2,max_val+2) locs,labels = plt.xticks() plt.xticks(locs, map(lambda x: "%g" % x, locs)) plt.savefig('figurename.eps',dpi=70) count += 1 Thank You Vineeth
Hi Phil, Though iris looked to be promising it needed many other libraries, so I chose the below suggestion. But is there a way to overlay contours on this ? also is it possible to specify the levels? In [23]: plt.pcolormesh?? did not give much help with best regards, Sudheer ________________________________ From: Phil Elson <pel...@gm...> To: "Mat...@li..." <mat...@li...> Sent: Saturday, 2 March 2013 3:40 PM Subject: Re: [Matplotlib-users] depth longitude plot Incidentally, if you wanted to do this a little more expressively than indexing, you could look into using iris (http://scitools.org.uk/iris/docs/latest/index.html). It doesn't currently support DAP, but if you had the NetCDF file (from http://www.marine.csiro.au/dods-data/climatology-netcdf/levitus_monthly_temp_98.nc) you would do: importiris import iris.quickplot as qplt import matplotlib.pyplot as plt temp_cube = iris.load_cube('levitus_monthly_temp_98.nc') # Sort out some of the bad metadata. Firstly, set the unit, # secondly rename the dimension 1 coordinate to 'depth'. temp_cube.unit = 'C' temp_cube.coord(dimensions=1, dim_coords=True).rename('depth') # Extract a spatial sub-domain. sub_temp_cube = temp_cube.extract(iris.Constraint(latitude=0.5, longitude=lambda v: 45 < v < 100)) # Iterate over all the depth-longitude sections (in this case it # iterates over time) for cross_sect_cube in sub_temp_cube.slices(['depth', 'longitude']): qplt.pcolormesh(cross_sect_cube) plt.gca().invert_yaxis() plt.show() break Hope that helps! Phil On 2 March 2013 09:37, Phil Elson <pel...@gm...> wrote: Perhaps something like: > > > > >from matplotlib import pyplot as plt >from netCDF4 import Dataset >import numpy as np > > > > >url='http://www.marine.csiro.au/dods/nph-dods/dods-data/climatology-netcdf/levitus_monthly_temp_98.nc' >ds = Dataset(url) > > > > >temp = ds.variables['TEMP'] >lats = ds.variables['lat'] >lons = ds.variables['lon'] >depths = ds.variables['z'] > > > > ># filter all but one latitude >lat_index = np.where(lats[:] == 0.5)[0][0] >lats = lats[lat_index] > > ># filter a range of longitudes >lon_lower_index = np.where(lons[:] == 44.5)[0][0] >lon_upper_index = np.where(lons[:] == 100.5)[0][0] >lons = lons[lon_lower_index:lon_upper_index] > > >temp = temp[0, :, lat_index, lon_lower_index:lon_upper_index] > > > > >plt.pcolormesh(lons, depths[:], temp) >plt.gca().invert_yaxis() > > >plt.show() > > > > > > > > >The indexing approach used here is quite flakey, so I certainly wouldn't use this in anything operational. > >Hope this helps, > >Phil > > ------------------------------------------------------------------------------ Everyone hates slow websites. So do we. Make your web apps faster with AppDynamics Download AppDynamics Lite for free today: http://p.sf.net/sfu/appdyn_d2d_feb _______________________________________________ Matplotlib-users mailing list Mat...@li... https://lists.sourceforge.net/lists/listinfo/matplotlib-users
Tank you very much for both solutions Phil, with best regards, Sudheer *************************************************************** Sudheer Joseph Indian National Centre for Ocean Information Services Ministry of Earth Sciences, Govt. of India POST BOX NO: 21, IDA Jeedeemetla P.O. Via Pragathi Nagar,Kukatpally, Hyderabad; Pin:5000 55 Tel:+91-40-23886047(O),Fax:+91-40-23895011(O), Tel:+91-40-23044600(R),Tel:+91-40-9440832534(Mobile) E-mail:sjo...@gm...;sud...@ya... Web- http://oppamthadathil.tripod.com *************************************************************** ________________________________ From: Phil Elson <pel...@gm...> To: "Mat...@li..." <mat...@li...> Sent: Saturday, 2 March 2013 3:07 PM Subject: Re: [Matplotlib-users] depth longitude plot Perhaps something like: from matplotlib import pyplot as plt from netCDF4 import Dataset import numpy as np url='http://www.marine.csiro.au/dods/nph-dods/dods-data/climatology-netcdf/levitus_monthly_temp_98.nc' ds = Dataset(url) temp = ds.variables['TEMP'] lats = ds.variables['lat'] lons = ds.variables['lon'] depths = ds.variables['z'] # filter all but one latitude lat_index = np.where(lats[:] == 0.5)[0][0] lats = lats[lat_index] # filter a range of longitudes lon_lower_index = np.where(lons[:] == 44.5)[0][0] lon_upper_index = np.where(lons[:] == 100.5)[0][0] lons = lons[lon_lower_index:lon_upper_index] temp = temp[0, :, lat_index, lon_lower_index:lon_upper_index] plt.pcolormesh(lons, depths[:], temp) plt.gca().invert_yaxis() plt.show() The indexing approach used here is quite flakey, so I certainly wouldn't use this in anything operational. Hope this helps, Phil ------------------------------------------------------------------------------ Everyone hates slow websites. So do we. Make your web apps faster with AppDynamics Download AppDynamics Lite for free today: http://p.sf.net/sfu/appdyn_d2d_feb _______________________________________________ Matplotlib-users mailing list Mat...@li... https://lists.sourceforge.net/lists/listinfo/matplotlib-users
Incidentally, if you wanted to do this a little more expressively than indexing, you could look into using iris ( http://scitools.org.uk/iris/docs/latest/index.html). It doesn't currently support DAP, but if you had the NetCDF file (from * http://www.marine.csiro.au/dods-data/climatology-netcdf/levitus_monthly_temp_98.nc *) you would do: import iris import iris.quickplot as qplt import matplotlib.pyplot as plt temp_cube = iris.load_cube(*'levitus_monthly_temp_98.**nc**'*) # Sort out some of the bad metadata. Firstly, set the unit, # secondly rename the dimension 1 coordinate to 'depth'. temp_cube.unit = *'C'* temp_cube.coord(dimensions=1, dim_coords=True).rename(*'depth'*) # Extract a spatial sub-domain. sub_temp_cube = temp_cube.extract(iris.Constraint(latitude=0.5, longitude=lambda v: 45 < v < 100)) # Iterate over all the depth-longitude sections (in this case it # iterates over time) for cross_sect_cube in sub_temp_cube.slices([*'depth'*, *'longitude'*]): qplt.pcolormesh(cross_sect_cube) plt.gca().invert_yaxis() plt.show() break [image: Inline images 1] Hope that helps! Phil On 2 March 2013 09:37, Phil Elson <pel...@gm...> wrote: > Perhaps something like: > > > from matplotlib import pyplot as plt > > from netCDF4 import Dataset > > import numpy as np > > > > url=*' > http://www.marine.csiro.au/dods/nph-dods/dods-data/climatology-netcdf/levitus_monthly_temp_98.nc > '* > > ds = Dataset(url) > > > > temp = ds.variables[*'TEMP'*] > > lats = ds.variables[*'**lat**'*] > > lons = ds.variables[*'**lon**'*] > > depths = ds.variables[*'z'*] > > > > # filter all but one latitude > > lat_index = np.where(lats[:] == 0.5)[0][0] > > lats = lats[lat_index] > > > # filter a range of longitudes > > lon_lower_index = np.where(lons[:] == 44.5)[0][0] > > lon_upper_index = np.where(lons[:] == 100.5)[0][0] > > lons = lons[lon_lower_index:lon_upper_index] > > > temp = temp[0, :, lat_index, lon_lower_index:lon_upper_index] > > > > plt.pcolormesh(lons, depths[:], temp) > > plt.gca().invert_yaxis() > > > plt.show() > > > > > > > The indexing approach used here is quite flakey, so I certainly wouldn't > use this in anything operational. > > Hope this helps, > > Phil > > >
Perhaps something like: from matplotlib import pyplot as plt from netCDF4 import Dataset import numpy as np url=*' http://www.marine.csiro.au/dods/nph-dods/dods-data/climatology-netcdf/levitus_monthly_temp_98.nc '* ds = Dataset(url) temp = ds.variables[*'TEMP'*] lats = ds.variables[*'**lat**'*] lons = ds.variables[*'**lon**'*] depths = ds.variables[*'z'*] # filter all but one latitude lat_index = np.where(lats[:] == 0.5)[0][0] lats = lats[lat_index] # filter a range of longitudes lon_lower_index = np.where(lons[:] == 44.5)[0][0] lon_upper_index = np.where(lons[:] == 100.5)[0][0] lons = lons[lon_lower_index:lon_upper_index] temp = temp[0, :, lat_index, lon_lower_index:lon_upper_index] plt.pcolormesh(lons, depths[:], temp) plt.gca().invert_yaxis() plt.show() The indexing approach used here is quite flakey, so I certainly wouldn't use this in anything operational. Hope this helps, Phil