编者按:这个文件被选为MATLAB中心推荐商品
boundedline.m:具有阴影错误/置信边界的线
此存储库包括边界线
Matlab函数及其实现outlinebounds.m
函数,以及运行它们所需的所有依赖函数。
的boundedline
功能允许用户轻松地绘图和线与阴影补丁周围。这种类型的绘图通常用于指示线周围的不确定性区间或误差边界。
内容
- 开始
- 语法
- 示例1:使用各种语法选项绘制行
- 示例2:填补空白
- 贡献
开始
先决条件
这个函数需要Matlab R14或更高版本。
下载和安装
此代码可以从github或者是MatlabCentral文件交换.文件交换条目每天都会从GitHub存储库中更新。
Matlab搜索路径
需要将以下文件夹添加到Matlab搜索路径(通过目录
,路径工具
等):
boundedline-包装/Inpaint_nans boundedline-包装/boundedline boundedline-包装/不均匀边界线-包装/singlepatch
语法
boundedline (x, y, b)
用以下公式给出的坐标绘制直线:x
和y
,周围是一块延伸一定距离的斑块b
高于/低于那条线。系统的尺寸x
,y
,b
阵列可以变化,以允许同时绘制多条线,面片边界可以是常量,也可以沿线的长度变化。有关这些变体的完整详细信息,请参阅函数标题帮助。
边界线(…,'alpha')
使用与相应线条颜色相同的部分透明面片渲染有界区域面片。如果未包括在内,则有界区域将使用具有相应线条颜色较浅阴影的完全不透明面片。
边界线(…,“透明度”,传输)
指示边界补丁的透明度或强度,使用介于0和1之间的标量。默认是0.2。
边界线(…,“方向”,方向)
指示边界的方向。方向可以是“绿色”
对于垂直(y方向)边界,或“水平的”
用于水平(x方向)边界。默认值为“绿色”
.
boundedline(…,'南',南flag)
指示边界补丁应如何处理线坐标或边界值中的nan。选项是“填满”
,以使用相邻值平滑间隙,“差距”
在这些点的修补程序中留下空白,或“删除”
完全去掉nan点,导致贴片缝隙的线性插值。有关这些选项的更多细节,请参阅下面的示例。
boundedline(…、“提出”提出)
根据这个nx3颜色映射数组中的颜色给线条上色(按绘图顺序),覆盖任何线条或默认颜色。
boundedline(…ax)
将有界线绘制到由句柄指示的轴上斧头
. 如果未包括,则使用当前轴。
[hl, hp] = boundedline(…)
返回结果线和面片对象的句柄。
hout=轮廓边界(hl,hp)
将轮廓添加到生成的边界补丁boundedline
,返回结果行对象的句柄霍特
.
两个函数的所有输入和输出变量的详细信息都可以通过帮助
函数。
示例1:使用各种语法选项绘制行
这个示例构建了MatlabCentral文件交换中使用的4个面板示例图像,它展示了几种提供线坐标、边界坐标和阴影选项的不同方法。
第一个轴使用LineSpec输入选项绘制两条线,该选项允许您为每条线设置线颜色、线颜色和标记类型。第一行的边界在x上变化,而第二行的边界对所有x都是不变的。在边界上添加一个轮廓,以便更清楚地看到重叠区域。
x=邻域(0,2*圆周率,50);y1=罪(x) ;y2=因为(x) ;e1=兰德(大小(日元))*.5+.5; e2=[.25.5];斧头(1)=次要情节(2,2,1); [l,p]=boundedline(x, y₁,e1,'- b *'x y2 e2,'——罗');outlinebounds(l p);标题('不透明边界,带有大纲');轴紧;
对于我们的第二个轴,我们使用相同的两条线,这次为这两条线指定x变化的边界。本例不使用LineSpec语法,而是使用默认颜色顺序来指定线和面片的颜色。我还打开了“α”
选项,该选项以部分透明的方式呈现补丁。
斧头(2)=次要情节(2,2,2);boundedline(x,[y1;y2],兰德(长度(日元)2,2)*.5+.5,'α');标题('透明的界限');轴紧;
对于x轴表示因变量的情况,边界也可以指定为水平方向。在本例中,标量误差界限值适用于两条线和线的两边。
斧头(3.)=次要情节(2,2,3.);boundedline((y1, y2), x,e1(1),'取向','霍利斯')标题('水平边界');轴紧;
可以使用颜色映射数组来分配颜色,而不是使用LineSpec或默认的颜色顺序。在这种情况下,越来越窄的边界被添加到同一行上。
斧头(4)=次要情节(2,2,4);boundedline(x,repmat(y1,4,1),排列(0.5:-0.1:0.2, (3.12),……'cmap',很酷的(4),…'透明度',0.5);标题('使用颜色映射的多个边界');集(斧头([124]),'xlim', (02*圆周率]);集(斧头(3.),'叶利姆', (02*圆周率]);轴紧;
示例2:填补空白
如果绘制一条线,其中有一个或多个nanx
或y
向量时,NaN位置将呈现为一行中有空白的缺失标记。然而,色斑
命令不能优雅地处理NAN;如果任何坐标包含NAN,它根本无法显示面片。
因此,boundedline的面片部分在bounds数组中遇到NaN时的预期行为(b
)或直线的x/y坐标(用于计算patch坐标)是模糊的。我提供了几个选择。
在我演示选项之前,我将创建一个数据集,它有一些不同类型的空白:
x=邻域(0,2*圆周率,50);y=罪(x);b=[一个(大小(y) )*0.2;兰德(大小(y) )*.5+.5]';y(10)=南;%NaN在线内,但没有边界b(20,1)=南;%NaN在下界,而不是线b(30,2)=南;%NaN在上界,但不是线b(40,:)=南;%NaN在界的两边而不是线
下面是errorbar图中的情况。
他=错误条(x,y,b(:,1),b(:,2),'博');行([x([10203040]);x([10203040])]、[一个(1,4)*-2;一个(1,4)*2], ...'颜色',一个(1,3.)*0.5,'线型',':');文本(x(10),罪(x(10))-0.2, {'\向上光标键','行','缺口'},'绿色','前','霍利斯','居中');文本(x(20),罪(x(20))-0.2, {'\向上光标键','降低','绑定','缺口'},'绿色','前','霍利斯','居中');文本(x(30),罪(x(30))-0.2, {'\向上光标键','上','绑定','缺口'},'绿色','前','霍利斯','居中');文本(x(40),罪(x(40))-0.2, {'\向上光标键','双面的','绑定','缺口'},'绿色','前','霍利斯','居中');轴严格相等;
处理boundedline中的NaN的默认方法是保留线中的间隙,但基于相邻点平滑边界中的间隙。如果您只缺少一个或两个点,并且您不想在绘图中强调这些间隙,则此选项会很好:
删去(他);(hl、惠普)=boundedline(x, y, b,'博','南','填满');何=outlinebounds惠普(hl);集(何),'线型',':','颜色','r','标记','.');
我用对比色添加了边界轮廓,这样你就可以看到我是如何处理单个点的。
第二个选项为任何NaN在修补程序中留下完整的间隙。我考虑过允许单边间隙,但想不出区分间隙和零值界的好方法。如果你有任何建议,我愿意接受(给我发电子邮件)。
删去([hl hp ho]);[hl,hp]=boundedline(x, y, b,'博','南','缺口');何=outlinebounds惠普(hl);集(何),'线型',':','颜色','r','标记','.');
最后一个选项从补丁中删除nan点。视觉效果与填充选项非常相似,但如果您绘制边界轮廓,那么遗漏的点是明显的。
删去([hl hp ho]);[hl,hp]=boundedline(x, y, b,'博','南','删除');何=outlinebounds惠普(hl);集(何),'线型',':','颜色','r','标记','.');
贡献
欢迎社区对本包的贡献!
要报告错误,请提交一个问题在GitHub,包括:
- 您的操作系统
- 你的Matlab版本和所有相关工具箱(类型
版本
在Matlab命令行中获取此信息) - 用于再现错误或错误行为的代码/数据,以及收到的任何错误消息的全文
请随时提交增强请求,或发送请求(通过GitHub)以修复bug或获得新功能。
我确实监控MatlabCentral FileExchange条目,以查看评论中提出的任何问题,但更喜欢跟踪GitHub上的问题。
与MATLAB R2016b一起发布
引用为
凯利·卡尼(2021年)。边界线(https://github.com/kakearney/boundedline-pkg),GitHub。恢复.