boundedline文档

boundedline函数用阴影误差/置信边界绘制直线。

回到气候数据工具内容

内容

语法

Boundedline (x, y, b) Boundedline (x, y, b, linespec) Boundedline (x1, y1, b1, linespec1, x2, y2, b2, linespec2) Boundedline(…, 'alpha') boundedline(…, ax) boundedline(…,“透明”,trans) boundedline(..., 'orientation', orient) boundedline(..., 'nan', nanflag) boundedline(..., 'cmap', cmap) [hl, hp] = boundedline(...)

描述

有界线(x, y, b)用给出的坐标绘制一条直线x而且y,周围是一片延伸一定距离的斑块b在那条线以上/以下。的尺寸xy,b数组可以变化以允许同时绘制多条线,并且补丁边界可以是恒定的或沿着线的长度变化。的维度x而且y必须满足与情节函数生成的行数与情节输入相同。的b数组应该是一个npoint x nside x nline数组,其维度对应于直线上的每个点(维度1),直线的每边(下/上或左/右,取决于方向)(维度2),以及由前面的x-y值描述的每条绘制的直线(维度3)。如果size(b,1) == 1,则直线上所有点的边界都是相同的。如果size(b,2) == 1,则边界将在直线两侧对称。如果size(b,3) == 1,则相同的边界将应用于前面x-y数组所描述的所有行(仅适用于x或y之一为数组时)。边界不能包括Inf、-Inf和NaN。

boundedline(…“α”)使用部分透明贴片将有界区域贴片渲染为与相应线条相同的颜色。如果没有包含,有界区域将使用一个完全不透明的补丁,在相应的线条颜色的浅阴影中。

boundedline(…,“透明”,transp)指示边界补丁的透明度或强度,使用0到1之间的标量。默认值是0.2。

boundedline(…,“定位”,或ient)指示边界的方向。方向可以是“绿色”对于垂直(y方向)边界,或“水平的”对于水平(x方向)边界。默认是“绿色”

boundedline(…,“南”,nanflag)指示边界补丁应该如何处理行坐标或边界值中的nan。选项是“填满”,使用相邻值来平滑差距,“差距”在这些点上留下空白,或者“删除”完全丢弃nan点,导致补片间隙的线性插值。有关这些选项的详细信息,请参阅下面的示例。

boundedline(…, 'color', col)指定行颜色。

boundedline(…, 'cmap', cmap)根据这个nx3颜色映射数组中的颜色为线条上色(按绘制顺序),覆盖任何linespec或默认颜色。

boundedline(…ax)将有界线绘制到由句柄指示的轴上斧头.如果不包含,则使用当前轴。

[hl, hp] = boundedline(…)返回所得到的行和修补程序对象的句柄霍奇金淋巴瘤而且惠普,分别。

示例1:使用各种语法选项绘制线条

这个示例构建了MatlabCentral File Exchange上使用的4个面板示例图像,其中显示了几种提供线坐标、边界坐标和阴影选项的不同方法。

第一个轴使用LineSpec选项作为输入绘制两条线,该选项允许您为每条线设置线颜色、线颜色和标记类型。第一行上的边界在x上变化,而第二行上的边界对于所有x都是不变的。在边界上添加一个轮廓,这样重叠区域可以更清楚地看到。

X = linspace(0,2 *pi, 50);Y1 = sinx;Y2 = cosx;E1 = rand(size(y1))*.5+.5;E2 =[。]25 5];Ax (1) = subplot(2,2,1);[l,p] = boundedline(x, y1, e1,“- b *”x y2 e2,“——罗”);outlinebounds (l p);标题(“带轮廓的不透明边界”);轴

对于我们的第二个轴,我们使用相同的两条线,这一次为两条线分配x变化的边界。这个例子没有使用LineSpec语法,而是使用默认的颜色顺序来分配线条和补丁的颜色。我也打开“α”选项,使补丁部分透明。

Ax (2) = subplot(2,2,2);boundedline (x, y1, y2,兰德(长度(日元),2,2)* 5 + 5,“α”);标题(“透明的界限”);轴

对于x轴表示因变量的情况,边界也可以分配给水平方向。在这种情况下,标量误差约束值应用于两条线和线的两侧。

Ax (3) = subplot(2,2,3);Boundedline ([y1;y2], x, e1(1),“定位”“水平的”)标题(水平范围的);轴

与其使用LineSpec或默认的颜色顺序,还不如使用colormap数组来分配颜色。在这种情况下,在同一行上添加越来越窄的边界。

Ax (4) = subplot(2,2,4);boundedline (x, repmat (y1 4 1),排列(0.5:-0.1:0.2 [3 1 2]),...“提出”酷(4),...“透明”, 0.5);标题(“使用颜色映射的多个边界”);Set (ax([1 2 4]),“xlim”, [0 2*pi]);集(ax (3),“ylim”, [0 2*pi]);轴

例2:常见的气候数据用途

这种类型的图的典型用途是显示与时间序列相关的值的范围。例如,让我们看看海冰范围数据的季节变化:

S =负载(“seaice_extent.mat”);图;情节(机灵(S.t)、S.extent_N“。”);集(gca),“xlim”, [0 366]);

我们可以计算所有年份的每日范围,并将这些界限与平均值一起绘制出来

[g, dy] = findgroups(doy(S.t));icemin = splitapply(@min, S.extent_N, g);icemax = splitapply(@max, S.extent_N, g);icemean = splitapply(@mean, S.extent_N, g);BND = [iceemean - iceemin, iceemax - iceemean];班;有界线(dy,冰均值,bnd);

在绘制时间序列时需要注意的一件事是补丁对象目前不支持datetime输入,因此此时也不支持boundedline;金宝app您必须首先将datetime输入数据转换为datenumber以使用此函数绘制,并且不能以datetime轴为目标。

例3:填空

如果您绘制一条线,其中一个或多个nanxy向量,NaN位置被渲染为一行中缺少一个空白的标记。然而,补丁命令不能优雅地处理nan;如果任何坐标包含nan,它根本无法显示补丁。

正因为如此,当遇到边界数组(b)或直线的x/y坐标(用于计算补丁坐标)是不明确的。我提供了一些选择。

在我演示这些选项之前,我将创建一个数据集,其中有一些不同类型的间隙:

X = linspace(0,2 *pi, 50);Y = sinx;B = [ones(size(y))*0.2;兰特(大小(y)) * 5 + 5) ';y(10) = NaN;% NaN在行中,但没有边界b(20,1) = NaN;% NaN在下界,但不在线上b(30,2) = NaN;% NaN在上界,但不在线上b(40,:) = NaN;% NaN在边界的两边,但不是线

下面是错误条图的样子。

图;He = errorbar(x,y,b(:,1), b(:,2),“博”);Line ([x([10 20 30 40]);X ([10 20 30 40])], [ones(1,4)*-2;ones(1,4)*2],...“颜色”(1、3)* 0.5的,“线型”“:”);Text (x(10), sin(x(10))-0.2, {“\向上光标键”“行”“差距”},“绿色”“高级”“水平的”“中心”);Text (x(20), sin(x(20))-0.2, {“\向上光标键”“低”“约束”“差距”},“绿色”“高级”“水平的”“中心”);Text (x(30), sin(x(30))-0.2, {“\向上光标键”“上”“约束”“差距”},“绿色”“高级”“水平的”“中心”);Text (x(40), sin(x(40))-0.2, {“\向上光标键”“双面”“约束”“差距”},“绿色”“高级”“水平的”“中心”);轴平等的

在boundedline中处理nan的默认方法是在行中保留空白,但根据相邻点平滑边界中的空白。如果你只缺一两个点,而你又不想强调情节中的这些缺口,那么这个选项就很不错:

删除(他);[hl,hp] = boundedline(x,y,b,“博”“南”“填满”);Ho = outlinebounds(hl,hp);集(ho)“线型”“:”“颜色”“r”“标记”“。”);

我用对比鲜明的颜色添加了边界轮廓,这样你就可以看到我是如何处理单个点的。

第二个选项为任何NaN在补丁中留下一个完整的空白。我考虑过允许单向间隙,但想不出一个好方法来区分间隙和零值边界。如果你有任何建议,我愿意接受(给我发邮件)。

删除([hl HP ho]);[hl,hp] = boundedline(x,y,b,“博”“南”“差距”);Ho = outlinebounds(hl,hp);集(ho)“线型”“:”“颜色”“r”“标记”“。”);

最后一个选项从补丁中删除属于nan的点。视觉结果与填充选项非常相似,但如果绘制边界轮廓,则会明显地发现缺失的点。

删除([hl HP ho]);[hl,hp] = boundedline(x,y,b,“博”“南”“删除”);Ho = outlinebounds(hl,hp);集(ho)“线型”“:”“颜色”“r”“标记”“。”);

作者信息

该函数和支持文档由Kelly Kea金宝apprney为2019年Matlab气候数据工具箱编写。它可以作为工具箱的一部分提供,也可以从GitHub