电子产业一站式赋能平台

PCB联盟网

搜索
查看: 271|回复: 0
收起左侧

MATLAB|阴影误差图画法

[复制链接]

260

主题

260

帖子

1829

积分

三级会员

Rank: 3Rank: 3

积分
1829
发表于 2023-9-13 13:41:00 | 显示全部楼层 |阅读模式
点击上方蓝字和“好玩的MATLAB”一起快乐玩耍吧!9 O( P+ F/ t7 t9 D7 K; o  a* H

uln4quqpunp6405193534.jpg

uln4quqpunp6405193534.jpg
) ]  |, t8 n: ^# @, v9 C
好玩的matlab
) U. ^$ `: r) I* b) L带你解锁不一样的matlab新玩法
7 ^! x9 K1 h) G. v* H' x
. M  S) \3 N! T; v今天介绍一下怎么绘制好看的阴影误差图,喜欢此推文的小伙伴们记得点赞+关注+分享!【尊重作者劳动成果,转载请注明推文链接和公众号名】
1 z4 _( w/ c2 [$ E% E/ ]6 U/ J4 S# m. V; I6 t$ c8 o( P

3zxa3g34g536405193634.png

3zxa3g34g536405193634.png

% a; ^, A6 T6 \4 T& R效果图
; G0 H) |: U- |4 A# F7 W% s& [) `0 b6 p

kuupmgu0bqw6405193734.gif

kuupmgu0bqw6405193734.gif
# U& z; y6 |$ h9 ^7 o+ d' `" P/ c7 M
2 v6 x& l/ u4 w4 F% e0 J
. {4 [0 ~, A3 R" q
阴影误差图介绍
6 W! W; \5 B2 U阴影误差图(Shaded Error Plots)是一种专业的数据可视化方式,主要用于展示一组数据点的中心趋势和其围绕该中心的可变性。该类图表广泛应用于科学研究、工程学、经济学和其他需要精确数据分析的领域。阴影误差图不仅提供了数据的均值(或其他中心测度数)位置信息,还通过阴影区域清晰地展示了数据的标准差或其他可变性度量,提供了数据集整体特性的全面视图。4 u+ M7 i0 X! y9 C* C/ r- s+ D
数学和统计学基础
  • 均值(Mean): 阴影误差图通常以数据集的算数平均值作为中心趋势的代表。
  • 标准差(Standard Deviation): 这是一种用于量化数据点偏离均值的度量,标准差越大,数据点的分散越广泛。
  • 置信区间(Confidence Intervals): 尽管不是所有的阴影误差图都采用置信区间,但这是一种常见的方式,用于估计如果多次抽样的话,中心趋势可能会在何处。
  • 矩阵运算和线性代数: 在处理多维数据或进行批量计算时,一些基本的矩阵运算和线性代数知识可能会被用到。在阴影误差图中,通常通过填充阴影区域来表示标准差或置信区间,而这些阴影区域一般会用透明度(alpha值)来区分不同层次的标准差。例如,1个标准差的范围内的阴影可能会较深,而2或3个标准差的范围内的阴影则可能会相对较浅。
    ( \/ Y7 R, }0 e+ L. L  h3 c该图表形式的优点在于其直观性和信息量。通过单一的图表,读者可以快速获取数据集的多个统计特性,从而更为准确和全面地理解数据。; p4 a( _5 L) Y- z4 y

    ' V# n0 [; v# y# Z8 s& m  ~3 v
    9 {/ u( H# `8 `7 W  a绘图源码: x9 A4 i* k' P7 g' i, `
    【小编建议:收藏、分享、点赞=学会?】
  • 2 ~& K- e. o/ \$ G
    clc; clear; close all;%--------------------------------------------------------------------------% @Author: 好玩的Matlab% @公众号:好玩的Matlab% @Created: 09,10,2023% @Email: 2377389590@qq.com% @Disclaimer: This code is provided as-is without any warranty.%--------------------------------------------------------------------------
    ; e# H" I4 t% m4 _! H7 }/ A* n5 b- d: {% 初始化数据data = randn(50, 80) * 5;x = (1:size(data, 2)) - 40;yP = sin(linspace(-2 * pi, 2 * pi, length(x))) * 20;y = bsxfun(@plus, data, yP) + 60;% 计算标准差和平均值err = std(data);meany = mean(y, 1);% 计算标准差的边界lowerBound1 = flipud((meany - err));upperBound1 = meany + err;lowerBound2 = flipud((meany - 2 * err));upperBound2 = meany + 2 * err;lowerBound3 = flipud((meany - 3 * err));upperBound3 = meany + 3 * err;% 准备用于填充区域的数据xconf1 = [x flipud(x')'];yconf1 = [meany + err flipud((meany - err)')'];xconf2 = [x flipud(x')'];yconf2 = [meany + 2 * err flipud((meany - 2 * err)')'];xconf3 = [x flipud(x')'];yconf3 = [meany + 3 * err flipud((meany - 3 * err)')'];% 选择图类型type = 6;% 创建图形figure('Position', [476 356 1011 516]);hold on;% 根据选择的类型进行绘图switch type    case 1        fHdl = fill(xconf1, yconf1, [0 1 0], 'EdgeColor', 'none', 'FaceAlpha', .2);        plot(x, meany, 'Color', [0, 1, 0], 'LineStyle', '-', 'LineWidth', 2);            case 2        fHdl(1) = fill(xconf1, yconf1, [0 1 0], 'EdgeColor', 'none', 'FaceAlpha', .2);        fHdl(2) = fill(xconf2, yconf2, [0 1 0], 'EdgeColor', 'none', 'FaceAlpha', .2);        fHdl(3) = fill(xconf3, yconf3, [0 1 0], 'EdgeColor', 'none', 'FaceAlpha', .2);        plot(x, meany, 'Color', [0, 1, 0], 'LineStyle', '-', 'LineWidth', 2);    case 3        plot(x,y,'.','color',[0.5,0.5,0.95]);        plot(x,meany,'LineStyle','-','LineWidth',3,'Color',[0.5,0.5,0.95]);        fHdl=fill(xconf1,yconf1,[0 0 0],'EdgeColor','none','FaceAlpha',.2);    case 4        dist = abs(y - meany);        normDist = dist ./ max(dist);        plot(x,meany,'LineStyle','-','LineWidth',2,'Color','k')        scatter(repmat(x,1,row),reshape(y',1,row*col),[],reshape(normDist',1,row*col), 'filled',...            'MarkerFaceAlpha',0.5,'MarkerEdgeColor','none','SizeData',30);        fHdl=fill(xconf1,yconf1,[0 0 0],'EdgeColor','none','FaceAlpha',.2);        c = colormap(jet(length(x)));        colorbar    case 5        plot(x,meany,'LineStyle','-','LineWidth',6,'Color',[1,0,0])        plot(x,meany,'o','MarkerSize',8,'MarkerFaceColor','w','MarkerEdgeColor',[1,0,0],'HandleVisibility', 'off')        fHdl=fill(xconf1,yconf1,[0.5,0.25,0.25],'EdgeColor','none','FaceAlpha',.2);        line(x, lowerBound1, 'Color', [1 0 0 0.5], 'LineWidth', 3, 'LineStyle', ':','HandleVisibility', 'off');        line(x, upperBound1, 'Color', [1 0 0 0.5], 'LineWidth', 3, 'LineStyle', ':','HandleVisibility', 'off');    case 6        fHdl(1)=fill(xconf1,yconf1,[0.9,0.25,0.25],'EdgeColor','none','FaceAlpha',.2);        fHdl(2)=fill(xconf2,yconf2,[0.9,0.25,0.25],'EdgeColor','none','FaceAlpha',.2);        fHdl(3)=fill(xconf3,yconf3,[0.9,0.25,0.25],'EdgeColor','none','FaceAlpha',.2);        plot(x,meany,'LineStyle','-','LineWidth',6,'Color',[1,0,0])        plot(x,meany,'o','MarkerSize',8,'MarkerFaceColor','w','MarkerEdgeColor',[1,0,0],'HandleVisibility', 'off')        line(x, lowerBound1, 'Color', [1 0 0 0.5], 'LineWidth', 3, 'LineStyle', ':','HandleVisibility', 'off');        line(x, upperBound1, 'Color', [1 0 0 0.5], 'LineWidth', 3, 'LineStyle', ':','HandleVisibility', 'off');        line(x, lowerBound2, 'Color', [0 1 0 0.5], 'LineWidth', 3, 'LineStyle', ':','HandleVisibility', 'off');        line(x, upperBound2, 'Color', [0 1 0 0.5], 'LineWidth', 3, 'LineStyle', ':','HandleVisibility', 'off');        line(x, lowerBound3, 'Color', [0 0 1 0.5], 'LineWidth', 3, 'LineStyle', ':','HandleVisibility', 'off');        line(x, upperBound3, 'Color', [0 0 1 0.5], 'LineWidth', 3, 'LineStyle', ':','HandleVisibility', 'off');end% 配置图形属性uistack(fHdl, 'bottom');ax = gca;ax.Box = 'off';ax.XLabel.String = 'X';ax.YLabel.String = 'Y';ax.FontName = 'Times New Roman';ax.GridLineStyle = '-.';ax.GridColor = 'k';ax.XGrid = 'on';ax.YGrid = 'on';ax.LineWidth = 1;ax.XMinorTick = 'on';ax.YMinorTick = 'on';ax.TickDir = 'in';ax.FontSize = 18;type =  1;6 Q0 R: G! C( @/ S  Z, z6 y( w% p

    ua0zs4nrvme6405193834.png

    ua0zs4nrvme6405193834.png
    4 F/ o0 v% K5 G% L2 l# X" z
    type =  2;
    - K% r1 W0 O9 B7 e2 p

    zrce0etjcio6405193934.png

    zrce0etjcio6405193934.png

    " A) R1 N9 ~; p# [: ]type =  3;( y  J. e/ D; }

    iv4otdi3ql26405194035.png

    iv4otdi3ql26405194035.png
    " o" K0 S; x( Y5 E+ J

    ) e1 I9 `+ t  D8 @type =  4;
    ( ?& Q# ~9 S/ _3 [+ {

    giz5qktzlyp6405194135.png

    giz5qktzlyp6405194135.png
    - \; I- W3 c2 I/ h# F+ L- w+ W! s
    type =  5;# _, M& E- A% k5 o- `: \% z5 F  b& Y

    qysb4eiy2qo6405194235.png

    qysb4eiy2qo6405194235.png

    & ~7 Z! c3 g( Q3 n1 U3 G2 C) dtype =  6;
    5 J/ x" t5 e; h8 V+ O. l, ^; F, a" p! {

    ljwsen1tby46405194335.png

    ljwsen1tby46405194335.png
    # z2 ?1 t3 m% k( o: @, J: j! d

    ; u8 j/ v9 @- p, x- -THE END- -% A* R4 Q$ `+ Y0 c, z* f" _
    1 n1 I8 E  R$ t1 a3 r! `9 v+ k
    参考资料:【1】https://github.com/raacampbell/shadedErrorBar【2】https://www.mathworks.com/help/releases/R2021b/matlab/ref/fill.html( L0 J) ]; \, a3 P. ^8 r3 u$ A2 K

    7 H7 U4 y. D7 n- J
    ) a7 Z2 m& a# N, P2 a

    sxr4yryefdq6405194435.jpg

    sxr4yryefdq6405194435.jpg
  • 回复

    使用道具 举报

    发表回复

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则


    联系客服 关注微信 下载APP 返回顶部 返回列表