matlab画图函数_MATLAB画图技巧与实例(三):误差条图errorbar函数

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-1 13:38   11   0

3147a10a66945905315ebd89571fb728.png

不管是数值模拟还是实验,有时获得的数据并不是稳定的,而是存在一定波动。因此,该工况必须进行多次计算或实验,以保证数据的可靠性和可重复性

多次采样后(一般不小于3次),通常采用均值和标准差来表示数据的大小及波动范围,因此就要用到误差条图,在MATLAB中,可用errorbar函数来实现。

1 errorbar函数的基本用法

errorbar(y,err)
errorbar(x,y,err)
errorbar(x,y,neg,pos)
errorbar(___,ornt)
errorbar(x,y,yneg,ypos,xneg,xpos)
errorbar(___,linespec)
errorbar(___,Name,Value)
errorbar(ax,___)
e = errorbar(___)
errorbar(y,err) 创建 y 中数据的线图,并在每个数据点处绘制一个垂直误差条。err 中的值确定数据点上方和下方的每个误差条的长度,因此,总误差条长度是 err 值的两倍。
errorbar(x,y,err) 绘制 y 对 x 的图,并在每个数据点处绘制一个垂直误差条。
errorbar(x,y,neg,pos) 在每个数据点处绘制一个垂直误差条,其中 neg 确定数据点下方的长度,pos 确定数据点上方的长度。
errorbar(___,ornt) 设置误差条的方向。为水平误差条指定 ornt 为 'horizontal',或者为水平和垂直误差条指定 'both'。ornt 的默认值为 'vertical',这将绘制垂直误差条。在前面的任何输入参数组合之后使用此选项。
errorbar(x,y,yneg,ypos,xneg,xpos) 绘制 y 对 x 的图,并同时绘制水平和垂直误差条。yneg 和 ypos 输入分别设置垂直误差条下部和上部的长度。xneg 和 xpos 输入分别设置水平误差条左侧和右侧的长度。
errorbar(___,linespec) 设置线型、标记符号和颜色。例如,'--ro' 绘制带圆形标记的红色虚线。线型仅影响线,而不影响误差条。
errorbar(___,Name,Value) 使用一个或多个名称-值对组参数修改线和误差条的外观。例如,'CapSize',10 将每个误差条末端的端盖长度设置为 10 磅。
errorbar(ax,___) 在由 ax 指定的坐标区(而不是当前坐标区)中创建绘图。指定坐标区作为第一个输入参数。
当 y 为向量时,e = errorbar(___) 返回一个 ErrorBar 对象。如果 y 是矩阵,它将为 y 中的每一列返回一个 ErrorBar 对象。可在创建特定的 ErrorBar 对象后使用 e 修改其属性。有关属性列表,请参阅 ErrorBar 属性。 [1]

1.1 示例1:y方向误差条

clc
clear all
close all
x = [1:10];
y = sin(x);
err = rand(1,10);
errorbar(x,y,err,'o','linewidth',1.5)
% set(gca,'looseInset',[0 0 0 0]) %去掉多余白边

b4689413c32b32b40ca79cf46b25268d.png

这里产生的数据点为sin函数,误差条为随机值。

改变err的值就能改变误差条的长度。

注意,注意,MATLAB默认y方向误差条。这是因为y方向误差条在科研中最为常见。

1.2 示例2:x方向误差条

clc
clear all
close all
x = [1:10];
y = sin(x);
err = rand(1,10);
errorbar(x,y,err,'horizontal','o','linewidth',1.5)
% set(gca,'looseInset',[0 0 0 0]) %去掉多余白边

db9c3b049c814bd8dbca031bebbc75df.png

若要改成x方向误差条,直接在errorbar函数中加入 'horizontal' 命宁即可。

1.3 示例3:xy双方向误差条

clc
clear all
close all
x = [1:10];
y = sin(x);
err = rand(1,10);
errorbar(x,y,err,'both','o','linewidth',1.5)
% set(gca,'looseInset',[0 0 0 0]) %去掉多余白边
axis equal

6a685d334edb44e9fd9930f2dfbd466f.png

在某些特殊情况下,x和y方向可能均存在误差条,且误差值一样大。那么,直接在errorbar函数中加入 'both' 命宁即可。

这里为了方便,让x和y轴坐标刻度一致,可看出每个点四个方向误差条长度一致。

1.4 示例四

clc
clear all
close all
x = [1:10];
y = sin(x);
xmin = rand(1,10);
xmax = rand(1,10);
ymin = rand(1,10);
ymax = rand(1,10);
errorbar(x,y,xmin,xmax,ymin,ymax,'o','linewidth',1.5)
% set(gca,'looseInset',[0 0 0 0]) %去掉多余白边
axis equal

fe6213af0ada803803d26f1e72cd241c.png

误差条有四个方向,分别是xmin,xmax,ymin,ymax。这里四个方向均采用随机值,可以看出四个方向长度均不一样。

但是往往在科研中,x方向和y方向误差条不同,但xmin=xmax,ymin=ymax。如下图

clc
clear all
close all
x = [1:10];
y = sin(x);
xmin = rand(1,10);
xmax = xmin;
ymin = rand(1,10);
ymax = ymin;
errorbar(x,y,xmin,xmax,ymin,ymax,'o','linewidth',1.5)
% set(gca,'looseInset',[0 0 0 0]) %去掉多余白边
axis equal

a9353330322b780e6a8bae47519f52e6.png

1.5 示例五:误差条属性

clc
clear all
close all
x = [1:10];
y = sin(x);
xmin = rand(1,10);
xmax = xmin;
ymin = rand(1,10);
ymax = ymin;
subplot(2,1,1)
errorbar(x,y,xmin,xmax,ymin,ymax,'o','linewidth',1.5,'CapSize',10)
subplot(2,1,2)
errorbar(x,y,xmin,xmax,ymin,ymax,'o','linewidth',1.5,'CapSize',20)
% set(gca,'looseInset',[0 0 0 0]) %去掉多余白边
% axis equal

179999880ac8529a93c5fd288aef962c.png

与plot函数相比,误差条图多出的属性为:顶端横线的长度。在errorbar函数中,采用 'CapSize' 命宁进行控制。

最后,可以更改线型、颜色、线宽、点型、点颜色、点大小等属性。这在(一)中已经详细讲过,这里不再赘述。

注意,注意,注意,'CapSize' 命宁的优先性低于其他,例如

errorbar(x,y,xmin,xmax,ymin,ymax,'o','linewidth',1.5,'CapSize',20)

可以运行,但是

errorbar(x,y,xmin,xmax,ymin,ymax,'CapSize',20,'o','linewidth',1.5)

是不能运行的。

误差条还是非常实用的,给出一个PRL论文的例子,几乎每个点都有误差条~[2]

0e0c178021f4ade2e07d7008b64af2a4.png

向优秀论文学习。

持续更新,更多文章请见目录

MATLAB画图技巧与实例:目录

Alien:MATLAB画图技巧与实例:目录zhuanlan.zhihu.com
62cb2e6d1528403c7c0d2999e1c4823d.png

MATLAB画图技巧与实例(一):常用函数

Alien:MATLAB画图技巧与实例(一):常用函数zhuanlan.zhihu.com
daaddc5bf698ea2673ea7322e6c5dc65.png

参考

  1. ^https://ww2.mathworks.cn/help/matlab/ref/errorbar.html
  2. ^https://arxiv.org/pdf/1812.11394.pdf
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP