我尝试在直方图的每个条上绘制标准偏差。目前,我从以下直方图开始:
要获得此直方图,我使用了y
数组(大小为8x3),如下所示:
% Abscissa
x=[2 4 8 16 32 64 128 256];
% Plot histogram
figure(1);
hbar=bar(log2(x),y(1:8,1:3),'b');
现在,我想绘制24个柱中每个柱的标准偏差。我有一个大小为deviation
的数组(8x3)。
我试着这样做:
% Abscissa
x=[2 4 8 16 32 64 128 256];
% Plot histogram
figure(1);
hbar=bar(log2(x),y(1:8,1:3),'b');
hold on;
% Plot standard deviation
errorbar(log2(x),y(1:8,1:3),deviation(1:8,1:3));
但是我收到以下错误:
Error using errorbar>checkSingleInput (line 264)
XData must be the same size as YData.
Error in errorbar (line 94)
x = checkSingleInput(x, sz, 'XData');
Error in plot_benchmark (line 29)
errorbar(log2(x),y(1:8,1:3),deviation(1:8,1:3));
似乎errorbar
不支持2D数组。如果是这种情况,如何绕过这个问题,并能够为上面图像中显示的24条柱状图中的每一条绘制误差条?
更新1:我尝试通过以下方式调整可能重复的解决方案:
hbar=bar(log2(x),y(1:8,1:3),'b');
hold on;
% Compute x position for each bar
for i=1:8
x1=get(get(hbar(i),'children'),'xdata');
barsx(i,1:3)=mean(x1,1)
end
% Plot standard deviation
errorbar(barsx,y(1:8,1:3),deviation(1:8,1:3));
但数组barsx
是空的,我不明白为什么......
有什么想法吗?
提前致谢