boundedline.m
编者按:此文件被选为MATLAB Central本周精选
boundedline.m:行with shaded error/confidence bounds
类的代码boundedline.m
Matlab函数及配套outlinebounds.m
函数,以及运行它们所需的所有依赖函数。
的boundedline
函数允许用户轻松地用阴影补丁围绕它绘制和对齐。这种类型的图通常用来表示不确定的区间或误差范围围绕一条线。
内容
- 开始
- 语法
- 示例1:使用各种语法选项绘制线条
- 例2:填空
- 贡献
开始
先决条件
此函数要求Matlab R14及以上版本。
下载安装
此代码可从Github或者是MatlabCentral文件交换.文件交换条目每天从GitHub存储库更新。
Matlab搜索路径
以下文件夹需要添加到您的Matlab搜索路径(通过目录
,pathtool
等):
boundedline-包裹/Inpaint_nans boundedline-包裹/boundedline boundedline-包裹/catuneven boundedline-包裹/singlepatch
语法
有界线(x, y, b)
用给出的坐标绘制一条直线x
而且y
,周围是一片延伸一定距离的斑块b
在那条线以上/以下。的尺寸x
,y
,b
数组可以变化以允许同时绘制多条线,并且补丁边界可以是恒定的或沿着线的长度变化。有关这些变化的详细信息,请参阅函数头帮助。
boundedline(…“α”)
使用部分透明贴片将有界区域贴片渲染为与相应线条相同的颜色。如果没有包含,有界区域将使用一个完全不透明的补丁,在相应的线条颜色的浅阴影中。
boundedline(…,'透明度',transp)
指示边界补丁的透明度或强度,使用0到1之间的标量。默认值是0.2。
boundedline(…,'取向',或ient)
指示边界的方向。方向可以是“绿色”
对于垂直(y方向)边界,或“水平的”
对于水平(x方向)边界。默认是“绿色”
.
boundedline(…,'南',南flag)
指示边界补丁应该如何处理行坐标或边界值中的nan。选项是“填满”
,使用相邻值来平滑差距,“差距”
在这些点上留下空白,或者“删除”
完全丢弃nan点,导致补片间隙的线性插值。有关这些选项的详细信息,请参阅下面的示例。
boundedline(…, 'cmap', cmap)
根据这个nx3颜色映射数组中的颜色为线条上色(按绘制顺序),覆盖任何linespec或默认颜色。
boundedline(…ax)
将有界线绘制到由句柄指示的轴上斧头
.如果不包含,则使用当前轴。
[hl, hp] = boundedline(…)
返回结果行和补丁对象的句柄。
Hout = outlinebounds(hl, hp)
为生成的边界补丁添加轮廓boundedline
,返回结果行对象的句柄胡特
.
两个函数的所有输入和输出变量的详细信息可以通过帮助
函数。
示例1:使用各种语法选项绘制线条
这个示例构建了MatlabCentral File Exchange上使用的4个面板示例图像,其中显示了几种提供线坐标、边界坐标和阴影选项的不同方法。
第一个轴使用LineSpec选项作为输入绘制两条线,该选项允许您为每条线设置线颜色、线颜色和标记类型。第一行上的边界在x上变化,而第二行上的边界对于所有x都是不变的。在边界上添加一个轮廓,这样重叠区域可以更清楚地看到。
x=linspace(0,2*π,50);日元=罪(x);y2=因为(x);e1=兰德(大小(日元))*.5+.5;e2=[二十五分.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或默认的颜色顺序,还不如使用colormap数组来分配颜色。在这种情况下,在同一行上添加越来越窄的边界。
斧头(4)=次要情节(2,2,4);boundedline(x,repmat(日元4,1),交换(0.5:-0.1:0.2, (3.12),……'提出',很酷的(4),…'透明度',0.5);标题('使用颜色映射的多个边界');集(斧头([124]),'xlim', (02*π]);集(斧头(3.),'ylim', (02*π]);轴紧;
例2:填空
如果您绘制一条线,其中一个或多个nanx
或y
向量,NaN位置被渲染为一行中缺少一个空白的标记。然而,补丁
命令不能优雅地处理nan;如果任何坐标包含nan,它根本无法显示补丁。
正因为如此,当遇到边界数组(b
)或直线的x/y坐标(用于计算补丁坐标)是不明确的。我提供了一些选择。
在我演示这些选项之前,我将创建一个数据集,其中有一些不同类型的间隙:
x=linspace(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([1020.30.40]);x([1020.30.40])]、[的(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);集(ho),'线型',':','颜色','r','标记','.');
我用对比鲜明的颜色添加了边界轮廓,这样你就可以看到我是如何处理单个点的。
第二个选项为任何NaN在补丁中留下一个完整的空白。我考虑过允许单向间隙,但想不出一个好方法来区分间隙和零值边界。如果你有任何建议,我愿意接受(给我发邮件)。
删除([hl HP ho]);(hl、惠普)=boundedline(x, y, b,'博','南','差距');何=outlinebounds惠普(hl);集(ho),'线型',':','颜色','r','标记','.');
最后一个选项从补丁中删除属于nan的点。视觉结果与填充选项非常相似,但如果绘制边界轮廓,则会明显地发现缺失的点。
删除([hl HP ho]);(hl、惠普)=boundedline(x, y, b,'博','南','删除');何=outlinebounds惠普(hl);集(ho),'线型',':','颜色','r','标记','.');
贡献
欢迎社区对这个软件包做出贡献!
要报告错误,请提交一个问题在GitHub,包括:
- 您的操作系统
- 您的Matlab版本和所有相关的工具箱(键入
版本
在Matlab命令行获取此信息) - 代码/数据来重现错误或错误行为,以及收到的任何错误消息的全文
也请随时提交增强请求,或发送拉请求(通过GitHub)以修复错误或新功能。
我确实监控了MatlabCentral FileExchange条目中评论中提出的任何问题,但更喜欢在GitHub上跟踪问题。
MATLAB R2016b发布
引用作为
凯利·科尔尼(2023)。boundedline.mGitHub (https://github.com/kakearney/boundedline-pkg)。检索.