1

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

4

1 回答 1

4

基于此答案,您可以尝试以下示例:

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. 完成此操作后,您可以生成无限数量的附加行,然后您可以为其设置属性(包括 new 'XData',随意'YData'
但是,您将需要一个初始行对象来复制和修改。
另外,取决于您如何设置你的情节,考虑用gca你的轴手柄替换,这样参考是正确的。

于 2013-06-28T14:25:11.150 回答