【问题标题】:How to shade area and make it transparent between two lines in MATLAB?如何在 MATLAB 中对区域进行着色并使其在两条线之间透明?
【发布时间】:2018-05-31 06:19:49
【问题描述】:

我在两条线之间的区域做了阴影,不是很干净:

area(xData,[Y1(:) ,Y2(:)-Y1(:)]); hold on

colormap([1 1 1; 0 0 1]);

如何在 MATLAB 中使其也透明?所以它就像:

ref:peltiertech.com

【问题讨论】:

    标签: matlab matlab-figure


    【解决方案1】:

    您可以使用area 对象的FaceAlpha 属性来设置透明度级别:

    xData = 1:7;
    Y1 = [3 2 1 4 3 2 1];
    Y2 = [8 6 9 8 7 5 6];
    area(xData, Y2, 'EdgeColor',[0 .447 .741], 'FaceColor',[0.929 .694 .125], 'FaceAlpha',.3);
    hold on
    area(xData, Y1, 'EdgeColor',[0 .447 .741], 'FaceColor', [1 1 1]);
    

    更简洁的方法是使用patch 而不是area

    h = patch([xData xData(end:-1:1) xData(1)], [Y1 Y2(end:-1:1) Y1(1)], 'b');
    set(h, 'EdgeColor',[0 .447 .741], 'FaceColor',[0.929 .694 .125], 'FaceAlpha',.3)
    

    【讨论】:

    • 这在 R2019b 版本中不起作用,不知道为什么。它不会填充该区域,只会创建补丁。虽然在旧版本中工作。
    • @Melb 很奇怪。我刚刚在 R2019a (Windows) 和 R2019b (Matlab Online) 中进行了测试,这两种方法都适合我
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-13
    • 2021-05-13
    • 2011-04-10
    • 2015-10-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多