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 <smit...@fusion.gat.com>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 <smit...@fusion.gat.com>
> 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
> > > Matplotlib-users@lists.sourceforge.net
> > > 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
************************************************************************************
------------------------------------------------------------------------------
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
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to