Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab条形图-根据符号和大小使用不同颜色填充条形图_Matlab_Graph - Fatal编程技术网

Matlab条形图-根据符号和大小使用不同颜色填充条形图

Matlab条形图-根据符号和大小使用不同颜色填充条形图,matlab,graph,Matlab,Graph,我试图在一个条形图中给各个条带上不同的颜色,比如说蓝色代表正红色代表负。我在网上找不到任何有效的东西。我在下面的代码中发现,每个条形图的颜色都是根据第一个条形图的值,而不是每个条形图的单独颜色: 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

我试图在一个条形图中给各个条带上不同的颜色,比如说蓝色代表正红色代表负。我在网上找不到任何有效的东西。我在下面的代码中发现,每个条形图的颜色都是根据第一个条形图的值,而不是每个条形图的单独颜色:

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

感谢您的帮助

您可以使用将条形对象的属性更改为
-1/0/1
,然后使用二进制红/蓝颜色映射:

figure
hold on
bar(1, 1, 'red')
bar(2, -1, 'blue')
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

你可以找到更多的信息

编辑:要使其着色,您必须结合以下各项适当设置
cdata


您是否建议为每个单独的酒吧设置单独的酒吧?如果条数不固定,如何使用此解决方案?如果条数不固定,您通常会使用循环。您好,盖尔-这在我的代码中适用于哪里?钢筋的数量可能是可变的。感谢您对i=length(number)-7:length(number)的帮助
;n=数字(i,1);条(i,n,'FaceColor',c(i));结束
顺便说一句,您应该提供一段人们可以运行的代码。为了便于进行颜色数据映射,请使用
caxis
命令:
caxis([-20,20])
将颜色条的最小值设置为-20,最大值设置为+20,确保在零附近对称。因此,毕竟有一个简单的解决方案:)
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]);