Matlab:'hold on'不能与'set()'一起使用?

时间:2013-06-28 13:49:07

标签: matlab plot set

我正在使用plot()hold(Ax, 'on')功能在同一轴上绘制多个绘图。但是,我注意到如果我使用set(Ax, 'XData', ..., 'YData', ...)进行绘图而不是plot(),则hold(Ax, 'on')功能无效。换句话说,如果我使用set()函数,我无法在同一轴上绘制所有曲线。知道为什么会这样,或者我是否可以使用set()并使用hold on功能?谢谢!

1 个答案:

答案 0 :(得分:4)

基于this answer,您可以尝试以下示例:

x1 = linspace(1,10,21);
y1 = rand(1,21);

x2 = x1;
y2 = rand(1,21);

x3 = x2;
y3 = rand(1,21);

h(1) = plot(x1,y1,'b');

h(2) = copyobj(h(1),gca); 
h(3) = copyobj(h(1),gca); 

set(h(2),'XData',x2,'YData',y2,'Color','r')
set(h(3),'XData',x3,'YData',y3,'Color','g')

set命令更新句柄引用的对象的属性。如果您不想一遍又一遍地修改一条曲线,但添加曲线,则必须使用copyobj复制初始线对象。完成后,您可以生成无限量的其他行,然后您可以根据需要设置属性(包括新的'XData''YData'
但是,您需要一个初始行对象进行复制和修改 此外,根据您设置绘图的方式,请考虑用轴手柄替换gca,以便参考正确。