我正在尝试使用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]);
答案 0 :(得分:3)
您可以使用以下技巧:
patch
以覆盖您不想填充的部分。这里没有边缘颜色。代码:
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]);
结果图: