如何在MATLAB中修改errorbar的起始点和宽度

分类: MATLAB |
在很多报告中,不仅需要报告平均数,还需要报告标准差或者标准误,因此matlab里的errorbar函数可以解决这个问题。
x=1:5;%横坐标
y=sin(x);%纵坐标
e=randn(1,length(x));%标准差或者标准误
figure
eb=errorbar(x,y,e,'b');%画出误差棒图,取得其句柄
xlabel('x');ylabel('y');
我们会得到如下的一张带errorbar的图
http://s8/mw690/001SKsYfzy7aRtg0yQTf7&690
但是我们注意到这个图的errorbar的七点有点错乱,并不是以中间竖线对称的,影响了可视化美观,如何解决这个问题呢。
在matlab2014之前的版本里,可以通过修改句柄属性来实现。
如果使用MATLAB2014、MATLAB2015则可以通过如下方法解决
x=1:5;%横坐标
y=sin(x);%纵坐标
e=randn(1,length(x));%标准差或者标准误
figure
eb=errorbar(x,y,e,'b');%画出误差棒图,取得其句柄
xlabel('x');ylabel('y');
我们会得到如下的一张带errorbar的图
http://s8/mw690/001SKsYfzy7aRtg0yQTf7&690
但是我们注意到这个图的errorbar的七点有点错乱,并不是以中间竖线对称的,影响了可视化美观,如何解决这个问题呢。
在matlab2014之前的版本里,可以通过修改句柄属性来实现。
hE_c = get(eb , 'Children' );但是这个方法在matlab2014之后的版本就不可以用了
errorbarXData = get(hE_c(2), 'XData' );
errorbarXData(4:9:end) = errorbarXData(1:9:end) - 0.2;
errorbarXData(7:9:end) = errorbarXData(1:9:end) - 0.2;
errorbarXData(5:9:end) = errorbarXData(1:9:end) + 0.2;
errorbarXData(8:9:end) = errorbarXData(1:9:end) + 0.2;
set(hE_c(2), 'XData', errorbarXData);
如果使用MATLAB2014、MATLAB2015则可以通过如下方法解决
xlength=0.2;在MATLAB2016,可以通过句柄属性CapSize来设置大小:
for k = 1:length(x)
X = [x(k) - xlength, x(k) + xlength];%new postion for each errorbar
y_u = [y(k) + e(k), y(k) + e(k)];%up line of errorbar
line(X, y_u,'color',[0 0 1]);%set line color as bule
y_b = [y(k) - e(k), y(k) - e(k)];%bottom line of errorbar
line(X, y_b,'color',[0 0 1]);%set line color as bule
end
eb.CapSize = 12;
http://s6/mw690/001SKsYfzy7aRv45kZTc5&690
现在得到的图,则是以中线对称的。