|
From: Sterling S. <sm...@fu...> - 2012-11-19 16:39:04
|
Chao,
I'm glad you were able to get what you wanted.
I don't know how to add anything to the gallery.
-Sterling
On Nov 17, 2012, at 3:32AM, Chao YUE wrote:
> Hi Sterling,
>
> Thanks for the help. Now we have a complete script that works as what we want:
>
> ****labels parallel with the colorbar with colorbar seperated ****
>
> By the way, is it possible to put in the gallery?
>
>
> from pylab import *
> a = np.arange(100).reshape(10,10)
> cbarlevel=np.arange(0,101,10)
> cs=contourf(a,levels=cbarlevel)
> cbar = colorbar()
> cbar.set_ticks(cbarlevel)
>
> #prepare the final label that we want
> cbar_label = []
> for i in range(len(cbarlevel)-1):
> cbar_label.append(" {0}-{1}".format(cbarlevel[i],cbarlevel[i+1]))
>
> cbar.set_ticklabels(['']*len(cbarlevel)) #remove the original labels
> #set ticks as white; the 'length' parameter is a bit dirty solution
> cbar.ax.tick_params(axis='y',left='on',length=10,color='w',width=5)
> cbar.outline.remove() #remove the colorbar frame
>
> #add the label parallel to colorbar; 0.035 to be set by manual observation, a bit dirty solution.
> yloc=np.arange(0.035,0.95,0.1)
> for l,y in zip(cbar_label,yloc):
> cbar.ax.text(1,y,l,transform=cbar.ax.transAxes,ha='left')
>
> cheers,
>
> Chao
>
> On Sat, Nov 17, 2012 at 12:12 AM, Sterling Smith <sm...@fu...> wrote:
> Chao,
>
> If you don't need the tick marks and are only annoyed by their appearance in the colorbar, then I am pasting below our code so far setting the tick length to 0.
>
> Code so far:
>
> from pylab import *
> fig = figure(2)
> fig.clear()
> a = np.arange(100).reshape(10,10)
> cbarlevel=np.arange(0,101,10)
> contourf(a,levels=cbarlevel)
> cbar = colorbar()
> cbar.set_ticks((cbarlevel[1:]+cbarlevel[:-1])/2.)
>
> #to manipulate the range:
> cbar_label = []
> for i in range(len(cbarlevel)-1):
> cbar_label.append("{0}-{1}".format(cbarlevel[i],cbarlevel[i+1]))
>
> #Then to apply on the colorbar:
> cbar.set_ticklabels(cbar_label)
>
> ax = fig.axes[-1] #This is not as clean as making the axes before the colorbar and passing to the colorbar...
> ax.yaxis.set_tick_params(length=0)
>
>
> If you still want the ticks, then you might think of keeping the ticks where you had set them originally, then placing texts (pylab.text) with the transAxes transform, using the following script:
>
>
> from pylab import *
> fig = figure(2)
> fig.clear()
> a = np.arange(100).reshape(10,10)
> cbarlevel=np.arange(0,101,10)
> contourf(a,levels=cbarlevel)
> cbar = colorbar()
> #cbar.set_ticks((cbarlevel[1:]+cbarlevel[:-1])/2.)
> cbar.set_ticks(cbarlevel)
>
> #to manipulate the range:
> cbar_label = []
> for i in range(len(cbarlevel)-1):
> cbar_label.append("{0}-{1}".format(cbarlevel[i],cbarlevel[i+1]))
> #cbar_label.append('')
>
> print cbar_label
> #['0-10', '10-20', '20-30', '30-40', '40-50', '50-60', '60-70', '70-80',
> #'80-90', '90-100', '']
>
> #Then to apply on the colorbar:
> cbar.set_ticklabels(['']*len(cbarlevel))
>
> ax = fig.axes[-1]
> #ax.yaxis.set_tick_params(length=0)
>
> yloc = linspace(0,1,len(cbar_label)+1)
> yloc = yloc[:-1] + yloc[1]/2.
> for l,y in zip(cbar_label,yloc):
> ax.text(1,y,l,transform=ax.transAxes,ha='left')
> draw()
>
> -Sterling
>
> On Nov 16, 2012, at 12:58PM, Chao YUE wrote:
>
> > Thanks Sterling. It's a good idea.
> >
> > Unluckily, I lose the original ticks and the ticks appeared in the middle. Is there any approach I can keep the original ticks while realizing what has been shown in the figure?
> >
> > Chao
> >
> > On Fri, Nov 16, 2012 at 5:47 PM, Sterling Smith <sm...@fu...> wrote:
> > Chao,
> >
> > The secret is positioning your ticks. I list here an untested attempt at putting the labels at the average of the current and next levels:
> >
> > cbar.set_ticks((cbarlevel[1:]+cbarlevel[:-1])/2.)
> >
> > Because you have less ticks, then you will want to remove the line
> >
> > cbar_level.append('')
> >
> > Hope that helps,
> > Sterling
> >
> > On Nov 16, 2012, at 7:46AM, ChaoYue wrote:
> >
> > > I have a bit progress, but still not very well.
> > >
> > > #to have a contourf plot
> > > a = np.arange(100).reshape(10,10)
> > > cbarlevel=np.arange(0,101,10)
> > > contourf(a,levels=cbarlevel)
> > > cbar = colorbar()
> > > cbar.set_ticks(cbarlevel)
> > >
> > > #to manipulate the range:
> > > cbar_label = []
> > > for i in range(len(cbarlevel)-1):
> > > cbar_label.append("{0}-{1}".format(cbarlevel[i],cbarlevel[i+1]))
> > > cbar_label.append('')
> > >
> > > In [54]: print cbar_label
> > > ['0-10', '10-20', '20-30', '30-40', '40-50', '50-60', '60-70', '70-80',
> > > '80-90', '90-100', '']
> > >
> > > #Then to apply on the colorbar:
> > > cbar.set_ticklabels(cbar_label)
> > >
> > > The generated figure is attached. But how can I put the labels a little bit
> > > upward to make them parallel with the respective small rectangles in the
> > > colorbar? <http://matplotlib.1069221.n5.nabble.com/file/n39786/fig.jpg>
> > >
> > >
> > >
> > >
> > >
> > > --
> > > View this message in context: http://matplotlib.1069221.n5.nabble.com/how-to-put-colorbar-label-beside-the-handle-tp39705p39786.html
> > > Sent from the matplotlib - users mailing list archive at Nabble.com.
> > >
> > > ------------------------------------------------------------------------------
> > > Monitor your physical, virtual and cloud infrastructure from a single
> > > web console. Get in-depth insight into apps, servers, databases, vmware,
> > > SAP, cloud infrastructure, etc. Download 30-day Free Trial.
> > > Pricing starts from $795 for 25 servers or applications!
> > > http://p.sf.net/sfu/zoho_dev2dev_nov
> > > _______________________________________________
> > > Matplotlib-users mailing list
> > > Mat...@li...
> > > https://lists.sourceforge.net/lists/listinfo/matplotlib-users
> >
> >
> >
> >
> > --
> > ***********************************************************************************
> > Chao YUE
> > Laboratoire des Sciences du Climat et de l'Environnement (LSCE-IPSL)
> > UMR 1572 CEA-CNRS-UVSQ
> > Batiment 712 - Pe 119
> > 91191 GIF Sur YVETTE Cedex
> > Tel: (33) 01 69 08 29 02; Fax:01.69.08.77.16
> > ************************************************************************************
> >
> > <fig.jpg>
>
>
>
>
> --
> ***********************************************************************************
> Chao YUE
> Laboratoire des Sciences du Climat et de l'Environnement (LSCE-IPSL)
> UMR 1572 CEA-CNRS-UVSQ
> Batiment 712 - Pe 119
> 91191 GIF Sur YVETTE Cedex
> Tel: (33) 01 69 08 29 02; Fax:01.69.08.77.16
> ************************************************************************************
>
|