使正条形图值为红色和负值为蓝色时的颜色问题?MATLAB

使正条形图值为红色和负值为蓝色时的颜色问题?MATLAB,matlab,bar-chart,Matlab,Bar Chart,所以我现在有一个条形图,红色显示正值,蓝色显示负值,但我的问题是,当条形图显示所有负值或所有正值时,颜色都乱了。下面是我的代码: dd = Data; s = sign(dd); barr = bar(dd); set(get(barr,'children'),'cdata',s); 我也尝试过“FaceVertexCData” 谢谢 只需在一个绘图中绘制两个条形图即可 x = 1:length(s); bar( x(s>0), dd(s>0), 'b'); hold on

所以我现在有一个条形图,红色显示正值,蓝色显示负值,但我的问题是,当条形图显示所有负值或所有正值时,颜色都乱了。下面是我的代码:

dd = Data;
s = sign(dd);
barr = bar(dd); 
set(get(barr,'children'),'cdata',s);  
我也尝试过“FaceVertexCData”


谢谢

只需在一个绘图中绘制两个条形图即可

x = 1:length(s);

bar( x(s>0), dd(s>0), 'b');
hold on;
bar( x(s<0), dd(s<0), 'r');

您必须定义一些颜色限制

set(gca, 'CLim', [-1 1]);
如果没有它,当所有符号都为正或负时,例如s=[1],条形图以绿色绘制,对应于彩色贴图的平均值。将颜色限制设置为[-1]将强制matlab使用颜色贴图的极值。例如,您也可以通过将CLim设置为[-10 10]来更改颜色