我想在Matlab中绘制两个不同位置的两个同时绘图,循环动画,两者都是不同的动画,一个是保持,另一个是保持。
另外,一个是2D,一个是3D
我正在做这样的事情:
for i=1:some_number
axes('position',...)
plot(...);hold on;
axes('position',...)
clf
plot3(...) (or fill3 but has to do with 3d rendering)
view(...)
set(gca, 'cameraview',...)
set(gca,'projection',...)
mov(i)=getframe(gcf)
end
Q1。 设置属性会影响第一个轴吗?如果是的话,该如何避免?
Q2。在我的情节坚持不起作用。两者都是不稳定的。喜欢使用延迟。我如何使它工作?
Q3。我希望mov记录两个轴。
P.S。我希望clf不是问题。我必须使用clf,或者如果在我的情况下有更合适的等价物,请建议我。
答案 0 :(得分:2)
您需要存储axes
函数的返回值,并在给定的轴上使用 进行后续函数调用,而不仅仅是当前轴。
% Create axes outside the loop
ax1 = axes('position',...);
ax2 = axes('position',...);
hold(ax1, 'on');
for i=1:some_number
plot(ax1, ...);
cla(ax2); % use cla to clear specific axes inside the loop
plot3(ax2, ...) (or fill3 but has to do with 3d rendering)
view(ax2, ...)
set(ax2, 'cameraview',...)
set(ax2,'projection',...)
mov(i)=getframe(gcf)
end
答案 1 :(得分:1)
以下是我的一段代码中的一个片段,其中绘制了三个天体的轨道,我认为它们可以帮助您:
for i = 1:j, %j is an arbitrary number input by the user
plot(x, y, '*')
plot(x2, y2, 'r')
plot(xa, ya, '+')
grid on
drawnow %drawnow immediately plots the point(s)
hold on %hold on keeps the current plot for future plot additions
%dostuff to x,y,x2,y2,xa,ya
end
您需要的两个主要功能是drawnow
和hold on
。
请注意:x,y,x2,y2,xa和ya随循环的每次迭代而变化,我刚刚省略了该代码。
编辑:我相信drawnow
功能会解决您hold on
的问题。
我认为这可以解决您的问题。
for i=1:some_number
axes('position',...)
plot(...);
drawnow %also note that you must not put the ; at the end
hold on %see above comment
axes('position',...)
clf
plot3(...) (or fill3 but has to do with 3d rendering)
view(...)
set(gca, 'cameraview',...)
set(gca,'projection',...)
mov(i)=getframe(gcf)
end