matlab - 在 Matlab/Octave 中填充折线和水平线之间的区域

标签 matlab graphics octave fill figure

我正在尝试使用 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 代码)。

最佳答案

您可以使用以下技巧:

  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]);

结果图:

enter image description here

关于matlab - 在 Matlab/Octave 中填充折线和水平线之间的区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27748518/

相关文章:

Octave: 看图

matlab - 如何在 MATLAB 中执行分层 10 折交叉验证进行分类?

matlab - 对象方法中的自引用

matlab - 求解微分方程需要大量时间

java - 旋转多个图像会导致闪烁。 Java 二维图形

matlab - 在 Octave 上使用 libsvm (Windows)

Matlab 编译器运行时库

java - 实现基于节点的图形 GUI 的最佳/最简单方法?

javascript - 在 Fabric.js 中用鼠标旋转东西的正确方法

matlab - 从 Octave 保存 .fig 文件