Matlab在没有重新绘制的情况下更改绘图中的单个点

s5s*_*s5s 2 matlab plot octave

所以我在2D平面上有一个N点的图(N可以非常大).我正在编写一个脚本来显示算法的工作原理.所以我有循环.在for循环中的每一步,我都想改变当前点的颜色(实际上可能只是用这一点制作一个干线图).

但是,在步骤结束时,我想删除当前点的颜色,以便我可以为下一个着色.目前我必须重绘整个图(包括2D点).我不确定Matlab是否在绘图命令中检测到这些内容但有没有办法在不重绘整个绘图的情况下执行此操作?

例如:

plot(x,y, '*');


for j = 1:N-1
    for i = j:N
        hold on;
        %Do stuff

        plot(x,y, '*');
        hold on;
        stem(x(1), y(1), 'g*');
    end

end
Run Code Online (Sandbox Code Playgroud)

Amr*_*mro 7

一个简单的例子:

%# plot some data
x = 1:100;
y = cumsum(rand(size(x))-0.5);
plot(x,y,'*-')

%# animate by going through each point
hold on
h = stem(x(1),y(1),'g');
hold off
for i=1:numel(x)
    %# update the stem x/y data
    set(h, 'XData',x(i), 'YData',y(i));

    %# slow down a bit, drawnow was too fast!
    pause(.1)
end
Run Code Online (Sandbox Code Playgroud)

截图