如何绘制带有错误条的分组条形图,如图所示?

zka*_*kan 5 matlab

我试图绘制一个分组的条形图,如下图所示.我找到了errorbar()函数,但到目前为止我无法弄清楚如何制作它.

这是我的代码.

Y = [0.9322225 0.86225 0.8973;
     0.8953635 0.862868 0.8099605;
     0.7473585 0.675698 0.80484];

bar(Y, 'grouped')
bar(Y, 'BarWidth', 0.5);
set(gca,'XTickLabel',{'', 'ML', '',  'HSV', '', 'NCC'});
Run Code Online (Sandbox Code Playgroud)

任何建议或指导将不胜感激.

信用:这个数字来自Sanin等人的工作."阴影检测:最近方法的调查和比较评估."

条形图

Tym*_*ymo 7

在此输入图像描述在此输入图像描述 ![

clc;
close all;

%Suppose you have the following data for five different strains across 4
%different experimental conditions (Conditions A,B,C,D, from left to right)


Strain1_Mean=[1.0 1.5 2.0 1.5]; % data
Strain2_Mean=[2.0 2.5 2.0 2.5]; % data
Strain3_Mean=[1.0 0.5 1.0 3.5]; % data
Strain4_Mean=[1.2 2.5 1.0 1.5]; % data
Strain5_Mean=[2.1 1.3 2.0 2.5]; % data

Strain1_std=[0.15 1.3 0.5 0.4];    %errors in data
Strain2_std=[1.0 1.5 0.2 0.5];     %errors in data
Strain3_std=[1.3 0.4 0.3 0.5];     %errors in data
Strain4_std=[0.13 1.36 0.17 0.45]; %errors in data
Strain5_std=[1.8 1.1 0.25 0.38];   %errors in data

% for asymmetric errors:

barwitherr(cat(3,zeros(4,5),[Strain1_std' Strain2_std' Strain3_std'...
    Strain4_std' Strain5_std']),[1 2 3 4],[Strain1_Mean' Strain2_Mean'...
    Strain3_Mean' Strain4_Mean' Strain5_Mean'],'LineWidth',2,...
    'BarWidth',0.8)


%for symmetric errors:

% barwitherr([Strain1_std' Strain2_std' Strain3_std' Strain4_std'...
%    Strain5_std'], [1 2 3 4],[Strain1_Mean' Strain2_Mean'...
%    Strain3_Mean' Strain4_Mean' Strain5_Mean']) 



set(gca,'XTickLabel',{'Group A','Group B','Group C','Group D'})
   legend('Parameter 1','Parameter 2','Parameter 3','Parameter 4',...
       'Parameter 5')
    ylabel('Value')
    grid on
   colormap summer

if you want to add more data sets, change zeros(4,5) to zeros(4,...) 6,7,8... 

I don't know how implement circles and squares like in example, if somebody can do it, you are welcome to improve :)][3]
Run Code Online (Sandbox Code Playgroud)


Dan*_*Dan 6

我不是100%如何复制该图表,但这可能会帮助您开始.

我在文件交换中找到了这个:http://www.mathworks.com/matlabcentral/fileexchange/30639-bar-chart-with-error-bars/content/barwitherr.m,尝试绘制条形图有错误栏.它允许不对称的误差条,我想如果你想让标记不同(比如你的例子中的方块和圆圈),那么你需要在链接的代码中改变这一行:errorbar(mean(x,1),values(xOrder,col),lowerErrors(xOrder,col), upperErrors(xOrder, col), '.k')

类似于:

errorbar(mean(x,1),values(xOrder,col),lowerErrors(xOrder,col), 'ok');
errorbar(mean(x,1),values(xOrder,col), upperErrors(xOrder, col), '*k')
Run Code Online (Sandbox Code Playgroud)

此外,如果您希望所有三个组都有标签尝试 set(gca,'XTickLabel',{'ML', 'HSV', 'NCC'});

另外,请查阅colormap(summer)help legend