/[MITgcm]/MITgcm_contrib/gael/matlab/cbar_gael3.m
ViewVC logotype

Annotation of /MITgcm_contrib/gael/matlab/cbar_gael3.m

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.1 - (hide annotations) (download)
Mon Sep 3 22:11:25 2007 UTC (17 years, 10 months ago) by gforget
Branch: MAIN
CVS Tags: HEAD
various matlab scripts

1 gforget 1.1 %author : Gael Forget
2     %date : Oct 31rst 2005
3     %object : non linear colormap, with associated colorbar
4     %inputs : -vecval = [a1 a2 ... aN], each interval [aI aI+1]
5     % will be associated with a color
6     % -colormap_name (e.g. 'jet')
7     %output : -bbb, the colorbar handle
8     function [bbb]=gael_cbar3(vecval,colormap_name);
9    
10     %remark1 : to renew a colorbar generated with this routine,
11     % first delete it manually ... delete(bbb);
12     %remark2 : because this routine regenerates the colormap,
13     % keeping the parameters (vecval,colormap_name)
14     % constant between subplots is safer
15     %remark3 : the (hard coded) choices were to not modify the parent
16     % axes position, and to put the colorbar axes on its right.
17     % ... It might happen that labels go out of the paper :
18     % change the code below for the colorbar axes properties,
19     % or change the parent axes position.
20     %remark4 : the parameter nb_colors must increase with the
21     % non linearity of the color scale, e.g.
22     % [[0:0.5:4] [5:10] [20 30 50 100 500]];
23    
24     %vecval must be strickly increasing :
25     tmp1=vecval(2:end)-vecval(1:end-1);
26     if ~isempty(find(tmp1<=0)); fprintf('please use increasing values \n');
27     bbb=-1; return; end;
28    
29     %original colormap precision :
30     %nb_colors=64*3;
31     tmp1=min(vecval(2:end)-vecval(1:end-1));
32     tmp2=vecval(end)-vecval(1);
33     tmp3=ceil(tmp2/tmp1/64);
34     nb_colors=64*10*tmp3;
35     %nb_colors=64*500*tmp3;
36    
37     %colormap and caxis :
38     eval(['tmp_map=colormap(' colormap_name '(nb_colors));']);
39     tmp_val=[vecval(1) vecval(end)];
40     tmp_val=[tmp_val(1) : (tmp_val(2)-tmp_val(1))/(nb_colors-1) : tmp_val(2)];
41     caxis([tmp_val(1) tmp_val(end)]);
42    
43     %subset of colours :
44     tmp_colors=round( [1:length(vecval)-1] * nb_colors/(length(vecval)-1) );
45     tmp_colors(1)=1; tmp_colors(end)=nb_colors;
46     tmp_colors=tmp_map(tmp_colors,:);
47    
48     %final colormap :
49     tmp_map2=tmp_map;
50     for kkk=1:nb_colors
51     tmp1=min(find(vecval>=tmp_val(kkk)));
52     if isempty(tmp1)
53     tmp_map2(kkk,:)=tmp_colors(end,:);
54     elseif tmp1==1
55     tmp_map2(kkk,:)=tmp_colors(1,:);
56     elseif tmp1==length(vecval)
57     tmp_map2(kkk,:)=tmp_colors(end,:);
58     else
59     tmp_map2(kkk,:)=tmp_colors(tmp1-1,:);
60     end
61     end
62     colormap(tmp_map2);
63    
64     %colorbar :
65     aaa=gca;
66     tmp1=get(aaa,'Position'); tmp1=[sum(tmp1([1 3]))+0.01 tmp1(2) 0.03 tmp1(4)];
67     bbb=axes('position',tmp1);
68    
69     tmp1=[1:2]'*ones(1,length(vecval));
70     tmp2=[1:length(vecval)]; tmp2=[tmp2;tmp2];
71     tmp3=[0.5*( vecval(2:end)+vecval(1:end-1) ) vecval(end)]; tmp3=[tmp3;tmp3];
72    
73     pcolor(tmp1,tmp2,tmp3); caxis([vecval(1) vecval(end)]);
74     set(bbb,'YAxisLocation','right');
75     set(bbb,'XTick',[]);
76     set(bbb,'YTick',[1:length(vecval)]);
77     set(bbb,'YTickLabel',num2str(vecval'));
78    
79     axes(aaa);
80    
81    

  ViewVC Help
Powered by ViewVC 1.1.22