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

nwlqm0z1  于 2022-11-15  发布在  Matlab
关注(0)|答案(2)|浏览(259)

我正在尝试绘制一个分组条形图,如下图所示。我找到了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'});

来源:这一数据来自Sanin等人的研究。《阴影检测:对最新方法的综述和比较评价》

aemubtdh

aemubtdh1#


![

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]
jogvjijk

jogvjijk2#

我不是百分之百知道如何复制那个图表,但也许这会帮助你入门。
我在文件交换: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')

此外,如果您希望所有三个组都有标签,请尝试set(gca,'XTickLabel',{'ML', 'HSV', 'NCC'});
还可以查看colormap(summer)help legend

相关问题