emp*_*per 4 matlab matlab-figure
我将在Matlab中绘制一个图形.图表很简单,我正在使用绘图功能.假设我要绘制的数据是(0:1:10).我还在我的图表上添加了标记.然后,我们有一条在坐标(0,0),(1,1),(2,2),...等上有标记的线.
现在,我想删除整行之间(2,2)和(3,3)不删除整行的行.也就是说,我的目的是摆脱线的特定部分而不会丢失整条线或任何标记点.
我怎样才能做到这一点?
在绘制之后删除线段很困难.您可以通过以下代码看到该行由一个MATLAB对象组成:
x = 1:10;
y = 1:10;
H = plot(x, y, '-o');
get(H, 'children')
Run Code Online (Sandbox Code Playgroud)
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');
Run Code Online (Sandbox Code Playgroud)
这相当于绘制从[0,0]到[2,2]的一条线,跳过下一个点,然后再次从[3,3]开始并继续到[9,9].

'擦除'部分线
这是最糟糕的做法,但是如果你不能为改变你的输入数组而烦恼,这是一个可以工作的廉价黑客.首先绘制线条:
x = 1:10; y = 1:10;
plot(x, y, '-o');
Run Code Online (Sandbox Code Playgroud)

现在在要擦除的部分上绘制一条白线:
hold on
plot([2 3], [2 3], 'w');
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,结果看起来并不正确,如果您尝试对图表执行其他操作,则会做出错误的响应.简而言之,我不推荐这种方法,但它可能在绝望的时候有用!