使用多种颜色绘制条形图时出错

时间:2014-06-17 14:56:41

标签: matlab plot matlab-figure

我试图绘制一个简单的条形图,其中包含8个条形图,所有偶数条形条形图都是一种颜色,所有奇数条形条形图都是不同的颜色。以下是我所做的:

info = [mean1 mean2 mean3 mean4 mean5 mean6 mean7 nean8];
sky_blue = [86, 180, 233] / 256;
orange = [230, 159, 0] / 256

for d=1:length(info)
plot_bar(d)=bar(info(1,d), 'BarWidth', 0.5); 
    if mod(d,2)==0
       set(plot_bar(d),'FaceColor', sky_blue);
    else 
       set(plot_bar(d),'FaceColor', orange);
    end
hold on;
end

由于某种原因,条形垂直堆叠,一个在另一个的顶部。有谁能告诉我如何水平分开酒吧?

另外,我如何制作一个传说,表示sky_blue颜色作为对照组,橙色作为药物组?谢谢!

2 个答案:

答案 0 :(得分:0)

有快速解决方案! 在每次迭代中,您都在绘制一个新的条形图而不加快其X坐标,因此所有条形图都在X=1

中绘制

将您的代码更改为(请注意bar()函数中唯一的更改):

info = [mean1 mean2 mean3 mean4 mean5 mean6 mean7 nean8];
sky_blue = [86, 180, 233] / 256;
orange = [230, 159, 0] / 256

for d=1:length(info)
plot_bar(d)=bar(d,info(1,d), 'BarWidth', 0.5); 
    if mod(d,2)==0
       set(plot_bar(d),'FaceColor', sky_blue);
    else 
       set(plot_bar(d),'FaceColor', orange);
    end
hold on;
end

输出:

enter image description here

注意:您可能想要使用XtickLabel来标记您的情节,看起来这个方法并不是很好。

答案 1 :(得分:0)

你可以在没有循环的情况下完成:一次性使用所有橙色条,然后一次性使用所有天蓝色条。请注意2'BarWidth'的aditional除法。

info = [mean1 mean2 mean3 mean4 mean5 mean6 mean7 nean8];
sky_blue = [86, 180, 233] / 256;
orange = [230, 159, 0] / 256

bar(1:2:numel(info), info(1:2:end), 'BarWidth', 0.5/2, 'Facecolor', orange);
hold on
bar(2:2:numel(info), info(2:2:end), 'BarWidth', 0.5/2, 'Facecolor', sky_blue);