我想用不同颜色的条形图遮蔽单个条形图,蓝色表示正红色表示负数。我找不到互联网上有用的东西。我在下面的代码中发现每个条形图都按照第一个条形图的颜色着色,而不是每个条形图的单独颜色:
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
感谢您的帮助
答案 0 :(得分:5)
您可以使用sign将条形对象的属性更改为-1/0/1
,然后使用二进制红/蓝色图:
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
您可以找到更多信息here。
编辑:要将其设置为阴影,您必须将cdata
与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]);
答案 1 :(得分:1)
figure
hold on
bar(1, 1, 'red')
bar(2, -1, 'blue')