电子产业一站式赋能平台

PCB联盟网

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

【高级绘图】Matlab绘制阴影误差图

[复制链接]

250

主题

250

帖子

1724

积分

三级会员

Rank: 3Rank: 3

积分
1724
发表于 2021-10-24 00:15:00 | 显示全部楼层 |阅读模式
点击上方蓝字和“好玩的matlab”一起快乐的玩耍吧
) {4 f. {. `" L8 h3 ~1 L# |7 K- `

c12epj0cooq64029979544.jpg

c12epj0cooq64029979544.jpg

5 H, T: z" r6 d8 n% n0 J% I好玩的matlab! L1 V( e  K) H& C! ]  e
带你喜欢上MATLAB, [8 o2 N/ J6 Y! z0 w2 x5 \+ m
/ o2 j) C2 L6 J; l; o) l
科研绘图中遇见的问题:怎么样去绘制好看精致的误差图?今天小编教大家画图的方法。绘图效果. d& J  g+ J' S0 E5 }& z" k6 B
1
0 {) l1 ^* M# B5 D& ]
7 {% W, Z2 Q7 \( `# e8 r2 F

b3w0wbqybrl64029979644.png

b3w0wbqybrl64029979644.png

8 z" |. g6 h* p! B, }" A
& K- j4 i+ I" {/ w* p4 u2 f

rfaueaurgb464029979744.png

rfaueaurgb464029979744.png

" s$ D( i& ~6 K5 S3 B, I
源码2
  • clear,clc;x = 0:10:500; y_true =  30*sind(x) + x/10; sigma = 3; y_measured = y_true + sigma*randn(size(x)); plot(x,y_true,'k','linewidth',2)hold onplot(x,y_measured,'color',[0.0118 0.2078 0])ylabel( 'Y轴');xlabel('X轴');% 绘制不确定性阴影区间errorshade(x,y_measured,sigma,[0 1 0.7]) legend('真实值','测量值 \pm\sigma = 3 mV ','location','northwest')legend box off axis tight title('好看的阴影误差图')grid minor?errorshade 函数:( W' s( P" u& Z% _* J
  • function h = errorshade(x,y,sigma,color,varargin)%errorshade绘制阴影区域以指示高斯不确定性。%通过生成指定颜色的RGB图像并设置透明度来作图%% 语法规则%  errorshade(x,y,sigma,color)%  errorshade(...,'resolution',res)%  errorshade(...,'average',N)%  h = errorshade(...)%%% 简介%% %errorshade(x,y,sigma ,color)以高斯阴影区域为中心绘制% x,y:为数据行。%sigma:表示阴影的一个标准偏差% color:为rgb值的三元素向量。
    . _. ]* x+ j+ P* I3 `%% 举例%数据% x = 0:10:500;% y_true =  30*sind(x) + x/10;% sigma = 3;% y_measured = y_true + sigma*randn(size(x));% plot(x,y_true,'k','linewidth',2)% hold on% plot(x,y_measured,'color',[0.0118 0.2078 0])% ylabel 'some values in mV'%% % 绘制不确定性阴影区间% errorshade(x,y_measured,sigma,[0.0824 0.6902 0.1020])% legend('true value','measured value \pm\sigma = 3 mV uncertainty','location','northwest')% legend boxoff% axis tight%% Error checks:narginchk(4,inf)assert(numel(color)==3,'输入错误: 颜色必须是三元素向量.')assert(numel(x)==numel(y),'输入错误::x 和 y 维度必须相等')assert(isscalar(sigma)==1,'输入错误: sigma必须是标量.')( ]" ]( V4 b' x1 |6 E. A
    %% Input parsing/ o7 X$ s1 ^* p
    tmp = strncmpi(varargin,'resolution',3);if any(tmp)    res = varargin{find(tmp)+1};    if isscalar(res)        res = [res res];    else        assert(numel(res)==2,'输入错误: 分辨率必须是标量或二元素向量.')    endelse    res = 2500*[1 1];endtmp = strncmpi(varargin,'average',2);if any(tmp)    avg = varargin{find(tmp)+1};    assert(isscalar(avg)==1,'输入错误: 移动平均距离必须为标量.')    y = imfilter(y(:),fspecial('average',[avg 1]),'replicate');endbuffer = 3*sigma; % This is the padding to add around all measurements in the vertical dimension.%% 限制范围:% 制作一个与数据缓冲区的尺寸相对应的网格:[X,Y] = meshgrid(linspace(min(x),max(x),res(1)),linspace(min(y)-buffer,max(y)+buffer,res(2)));% Find y locations along all x points of the gridyi = interp1(x,y,linspace(min(x),max(x),res(1)));% 正态分布:P = (1/sqrt(2*pi*sigma^2)) * exp(-(bsxfun(@minus,Y,yi)).^2/(2*sigma^2));%每个点到yi的距离将用作透明度的量度:Z = P-min(P(:));Z = Z/max(Z(:));%创建指定颜色的RGB图像:RGB = cat(3,color(1)*ones(size(Z)),color(2)*ones(size(Z)),color(3)*ones(size(Z)));% 绘制颜色的RGB图像:h = image(RGB,'xdata',X(1,:),'ydata',Y(:,1));axis xy% 设置透明度:set(h,'alphadata',Z)% 将渲染器设置为OpenGL,因为透明度仅适用于OpenGL:set(gcf,'renderer','OpenGL');% 底部:uistack(h,'bottom')%% 清除:if nargout==0    clear hendend% e5 n" Q/ w* l$ L6 X; Z8 ]
    参考文献:5 K; a, C! l+ Z
    好玩的matlab:https://idmatlab.blog.csdn.net/article/details/113733467" }* t! G' ^1 \1 ?6 R( d: {  Y* Y
    / @$ z  t5 p1 j  j4 r

    # F8 V. [; ?4 A8 M* M# Y

    xss5suwjehf64029979844.jpg

    xss5suwjehf64029979844.jpg
    ( w* @2 T$ g) K! Y/ I7 r
    好玩的matlab 1分钟前
    2 v/ d3 i& ]" p8 B3 |3 H# s谁给你的权利,一天啥正事不干就想着玩手机,还不快去测试代码。7 A' }; A8 W( o' O) S& ?
    % t# m0 l  w6 U4 m/ P
    往期精彩回顾
    6 h4 ?% y) Y9 G

    vjf4nm4xinj64029979944.png

    vjf4nm4xinj64029979944.png
    + o% E4 M3 s: F
    推荐 | 【好玩的源码】MATLAB 绘制动态正弦函数推荐 | 【高级绘图】MATLAB怎么将图形局部放大推荐 | 【源码分享】9 `5 }9 u5 F7 d

    kii50ucfl1t64029980044.png

    kii50ucfl1t64029980044.png
    4 h/ {! [" b( n" ^
    1 L" L7 H& K7 Y6 H) h( H# A

    8 W1 u4 S, `7 f7 P0 P

    mh5mrvqlznq64029980144.jpg

    mh5mrvqlznq64029980144.jpg

    - {' [$ `& ?& L$ J
    3 }# T& A% A& P7 `1 T  c& i. L0 {* m$ {# A! J. B, o

    6 e: Z+ ?+ l) }3 B+ y' y↓↓↓ 点击"阅读原文" 【查看更多信息】
  • 回复

    使用道具 举报

    发表回复

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

    本版积分规则


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