【发布时间】:2018-02-11 12:42:24
【问题描述】:
我试图突出显示两个阶梯图的相交区域。我能够选择相交区域内的点,并想使用 patch 命令创建填充形状,但没有成功。但是,仍然需要排除一些点并添加交点。
另一个想法是创建两个面积图,看起来像楼梯图:
x = pc_bh(1, :);
y = pc_bh(2, :);
x = [x; x];
y = [y; y];
area(x([2:end end]),y(1:end))
hold on;
x = pc_bh(3, :);
y = pc_bh(4, :);
x = [x; x];
y = [y; y];
area(x([2:end end]),y(1:end))
并与它们相交,这也不起作用。
这是想要的结果:
这是一个在相交区域内的点上带有标记的图:
标记的代码很简单:
pointsA = [];
pointsB = [];
lowerLimit = pc_bh(3, 1);
upperLimit = pc_bh(1, 11);
for entry=2:11
if pc_bh(1, entry) >= lowerLimit && pc_bh(1, entry) <= upperLimit
pointsA = vertcat(pointsA, [pc_bh(1, entry), pc_bh(2, entry)]);
pointsA = vertcat(pointsA, [pc_bh(1, entry), pc_bh(2, entry) + 1/10]);
end
if pc_bh(3, entry) >= lowerLimit && pc_bh(3, entry) <= upperLimit
pointsB = vertcat(pointsB, [pc_bh(3, entry), pc_bh(4, entry)]);
pointsB = vertcat(pointsB, [pc_bh(3, entry), pc_bh(4, entry) - 1/9]);
end
end
plot(pointsA(:, 1), pointsA(:, 2), 'xr');
plot(pointsB(:, 1), pointsB(:, 2), 'xb');
数据集是一个 4 x 11 矩阵,其中第 1/2 行包含第一个图的 x/y 值,第 3/4 行包含第二个图的 x/y 值。
这是使用的数据集:
0.99754 0.99754 0.99772 0.99790 0.99808 0.99821 0.99842 0.99870 0.99886 0.99900 0.99918
1 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0
0.99873 0.99873 0.99899 0.99918 0.99928 0.99945 0.99969 0.99973 0.99987 0.99993 0.99993
0 0.11111 0.22222 0.33333 0.44444 0.55555 0.66666 0.77777 0.88888 1 1
【问题讨论】:
标签: matlab plot matlab-figure