【问题标题】:Fill area between a polyline and a horizontal line in Matlab/OctaveMatlab / Octave中的折线和水平线之间的填充区域
【发布时间】:2015-01-02 21:02:57
【问题描述】:

我正在尝试使用 Octave/Matlab 填充折线和水平线之间的区域(将这条折线切割成几个点),但我只想保留水平线下方的区域。

这是我目前为止的想法:

x = 0:0.5:6;
y = [3 2.5 1 1 1 2.5 3 2.5 1 1 1 2.5 3];
yline(1:13) = 2;

figure(1)
plot(x,y,'k')

fill([x fliplr(x)],[y yline],'g')
axis equal
xlim([-1 7]);

我搜索了几天以找到解决方案,但我只接近答案 hereherehere(不幸的是,最后一个仅适用于 r 代码)。

【问题讨论】:

    标签: matlab graphics octave fill figure


    【解决方案1】:

    您可以使用以下技巧:

    1. 正常填写,就像在代码中一样。无需为边缘着色;稍后会完成。
    2. 绘制一个白色矩形patch 以覆盖您不想填充的部分。这里也没有边缘颜色。
    3. 在上面画线。

    代码:

    x = 0:0.5:6;
    y = [3 2.5 1 1 1 2.5 3 2.5 1 1 1 2.5 3];
    yline(1:13) = 2;
    
    figure(1)
    
    fill([x fliplr(x)],[y yline],'g', 'edgecolor', 'none')
    hold on
    patch([min(x) max(x) max(x) min(x)],[yline(1) yline(1) max(y) max(y)], 'w', ...
        'edgecolor', 'none')
    plot(x,y,'k')
    plot(x,yline,'k')
    axis equal
    xlim([-1 7]);
    

    结果图:

    【讨论】: