Matlab Bar Graph - fill in bars of different colors depending on the sign and size

I am trying to shade individual columns on a histogram with different colors, for example, blue for positive red for negative. I can not find anything on the Internet that works. I have my code below, I find that each bar in color corresponds to the value of the first bar, and not the individual colors for each bar:

c1=zeros(32,3); c2=zeros(32,3); for i=1:3 c1(:,i) = linspace(r(i),w(i),32); c2(:,i) = linspace(w(i),b(i),32); end c= [c1(1:end-1,:);c2]; subplot(2,2,2) bar(Numbers(end-7:end,1)), shading interp caxis([-8 8]), colormap(c), colorbar 

thanks for the help

+7
source share
2 answers

You can change the properties of the bar object to -1/0/1 with sign , and then use the binary red / blue color palette

 y=rand(10,1)*3-1.5; % some data hb=bar(y); set(get(hb,'children'),'cdata', sign(y) ); colormap([1 0 0; 0 0 1]); % red & blue in rgb 

bar plot with binary colors

You can find more information here .

EDIT: to obscure it, you need to install cdata accordingly in combination with caxis :

 y=rand(10,1)*3-1.5; % some data hb=bar(y); % the colormap Mc = 16; Nc = Mc*2+1; % number of colors, uneven so there is a neutral middle rgb = [1 0 0;0 0 1]; cmap = [linspace(rgb(1,1),rgb(2,1),Nc)' linspace(rgb(1,2),rgb(2,2),Nc)' linspace(rgb(1,3),rgb(2,3),Nc)' ]; colormap(cmap); % cdata c = y; set(get(hb,'children'),'cdata', c); cmax = max(abs(c)); caxis([-cmax cmax]); 

bar plot with shaded colors

+5
source
 figure hold on bar(1, 1, 'red') bar(2, -1, 'blue') 
+1
source

All Articles