加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

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

(2017-05-06 16:11:37)
分类: 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之前的版本里,可以通过修改句柄属性来实现。

hE_c                   =    get(eb     , 'Children'    );

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之后的版本就不可以用了
如果使用MATLAB2014、MATLAB2015则可以通过如下方法解决

xlength=0.2;
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
在MATLAB2016,可以通过句柄属性CapSize来设置大小:
eb.CapSize = 12;
http://s6/mw690/001SKsYfzy7aRv45kZTc5&690
现在得到的图,则是以中线对称的。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有