Issues creating error bar for bar figure

Hi,
I'm trying to create error bars on my bar plot.
I get the error: "Input arguments must be numeric, datetime, duration, or categorical."
I'm not sure what I'm doing wrong. Even when I make err equal to two numbers it still doesn't work.
AMean = 656631
AMean = 656631
BMean = 1130
BMean = 1130
ASTD = 237027
ASTD = 237027
BSTD = 209
BSTD = 209
AHeight = 10
AHeight = 10
BHeight = 11
BHeight = 11
Names = ["A"; "B" ] ;
Averages = [AMean; BMean] ;
StandDev = [ASTD ; BSTD] ;
SampSize = [AHeight; BHeight] ;
NewTable = table(Names, Averages, StandDev, SampSize) ;
x = NewTable.Names ;
y = NewTable.Averages ;
err = StandDev ./ sqrt(SampSize) ;
bar(x, y)
errorbar(x,y,err)
Error using errorbar (line 86)
Input arguments must be numeric, datetime, duration, or categorical.

 採用された回答

Matt J
Matt J 2025 年 9 月 11 日
編集済み: Matt J 2025 年 9 月 11 日

1 投票

Here's an MWE:
x = ["A"; "B" ] ;
y = [3,4] ;
err = [0.5,0.75] ;
bar(x, y); hold on
errorbar(categorical(x),y,err,'r', 'Linestyle','none');
axis padded

4 件のコメント

Kristine
Kristine 2025 年 9 月 11 日
I didn't realise it was as simple as forgetting to add "hold on"
Kristine
Kristine 2025 年 9 月 11 日
@Matt J Why isn't there a line connecting your two error bars? I have a line connecting mine as seen in CHuguang's example below as well. How do I remove that?
Chuguang Pan
Chuguang Pan 2025 年 9 月 11 日
@Kristine. In order to remove a line connecting, you can use Linestyle = 'none' as shown in the code:
errorbar(categorical(x),y,err,'r', 'Linestyle','none');
Matt J
Matt J 2025 年 9 月 11 日
編集済み: Matt J 2025 年 9 月 11 日
But it would be very strange to connect the bars with lines. Lines on a plot are meant for visualizing increases and decreases of y with x. But here, there is notion of "increasing x". The x-axis just contains unordered bar labels A and B.

サインインしてコメントする。

その他の回答 (1 件)

Chuguang Pan
Chuguang Pan 2025 年 9 月 11 日

0 投票

The problem lies in the variable Names is string array, which is not supported by errorbar function. You can use categorical function to convert string array to categries.
AMean = 656631;
BMean = 1130;
ASTD = 237027;
BSTD = 209;
AHeight = 10;
BHeight = 11;
Names = ["A"; "B" ] ;
Averages = [AMean; BMean] ;
StandDev = [ASTD ; BSTD] ;
SampSize = [AHeight; BHeight] ;
NewTable = table(Names, Averages, StandDev, SampSize) ;
x = NewTable.Names ;
y = NewTable.Averages ;
err = StandDev ./ sqrt(SampSize) ;
bar(x, y)
hold on
errorbar(categorical(x),y,err)

カテゴリ

ヘルプ センター および File ExchangeData Distribution Plots についてさらに検索

製品

質問済み:

2025 年 9 月 11 日

編集済み:

2025 年 9 月 11 日

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by