【问题标题】:How to plot a grouped bar chart with errors bar as shown in the figure?如图所示,如何绘制带有误差条的分组条形图?
【发布时间】:2012-12-24 17:59:21
【问题描述】:

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

Credit:这个数字来自 Sanin 等人的工作。 “阴影检测:近期方法的调查和比较评估。”

【问题讨论】:

  • 请张贴一些代码来展示你到目前为止所做的尝试。我相信你至少可以绘制一个条形图,可能是一个分组的。
  • 嗨,丹,谢谢您的提及。我已经编辑了我的帖子。

标签: matlab bar-chart errorbar


【解决方案1】:

我不是 100% 如何复制该图表,但也许这会帮助您入门。

我在 File Exchange 上找到了这个: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

【讨论】:

  • 非常感谢。我现在正在调查。
【解决方案2】:

![

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]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-06
    • 2021-11-25
    • 1970-01-01
    • 1970-01-01
    • 2015-06-28
    • 1970-01-01
    • 2020-12-09
    相关资源
    最近更新 更多