我将在Matlab中绘制一个图形。图表很简单,我正在使用绘图功能。
假设我要绘制的数据是(0:1:10)
。我还在我的图表上添加了标记。然后,我们有一条在坐标(0,0),(1,1),(2,2),...
等上有标记的线
现在,我想删除(2,2)
和(3,3)
之间的行而不删除整行。也就是说,我的目的是摆脱线的特定部分而不会丢失整条线或任何标记点。
我该怎么做?
答案 0 :(得分:6)
绘制之后删除线段很困难。您可以通过以下代码看到该行由一个MATLAB对象组成:
x = 1:10;
y = 1:10;
H = plot(x, y, '-o');
get(H, 'children')
ans =
空矩阵:0乘1
我们可以看到该行没有子节点,因此我们无法删除“子节”。但是,我们可以使用一些厚颜无耻的技巧来尝试达到同样的效果。
分别绘制两行
...使用hold on
。见Victor Hugo的回答。这是实现我们目标的正确方法。
在一个
中绘制两个单独的行MATLAB没有绘制具有NaN值的点。通过修改输入向量,可以使MATLAB跳过一个点以产生虚线的效果:
x = [0 1 2 2 3 4 5 6 7 8 9];
y = [0 1 2 nan 3 4 5 6 7 8 9];
plot(x, y, '-o');
这相当于绘制从[0,0]到[2,2]的一条线,跳过下一个点,然后再次从[3,3]开始并继续到[9,9]。
'删除'部分内容
这是最糟糕的做法,但是如果你不能为改变你的输入数组而烦恼,这是一个可以工作的廉价黑客。首先绘制线条:
x = 1:10; y = 1:10;
plot(x, y, '-o');
现在在要擦除的部分上绘制一条白线:
hold on
plot([2 3], [2 3], 'w');
正如您所看到的,结果看起来不太正确,如果您尝试对图表执行其他操作,则会反应不佳。简而言之,我不推荐这种方法,但它可能在绝望的时候有用!
答案 1 :(得分:2)
尝试以下方法:
y = [0.2751 0.2494 0.1480 0.2419 0.2385 0.1295 0.2346 0.1661 0.1111];
x = 1:numel(y);
plot(x(1:4), y(1:4), '-x')
hold
plot(x(5:end), y(5:end), '-x')