F=zeros(3,3);
F(1,:)=[0.3,0.35,0.2];
T=diag([0.2,0.5],-1);
P=(F+T)
X=[100;100;57]
plot2d([1,2,3],X)
for i=1:100
drawlater();
X=P*X;
clf;
plot2d([1,2,3],X)
drawnow();
end
scilab不断重新调整我的动画。如何避免重新缩放?
提前谢谢!
答案 0 :(得分:1)
除了将“ data_bounds”设置为另一个答案中已经给出的设置之外,您可能还必须将“ tight_limits”设置为“ on”。
如果tight_limits为“ off”,则不必将轴限制设置为由data_bounds指定的值,而是可以将其设置为稍大的范围,以获得漂亮的标签。
答案 1 :(得分:0)
每次调用clf()
时,当前数字都会被清除,因此,调用plot2d()
时没有设置数据边界。因此,对于每对clf() plot()
设置新边界,并重新缩放图形。
如果您需要清除图形和固定边界,则必须在每个循环中使用data_bound
设置轴属性set()
:
set(gca(), 'data_bound', [x_min, y_min; x_max, y_max]);
我注意到你的动画在X中从1到3,在Y中从0到100,所以你可以像这样编写你的循环:
plot2d([1,2,3],X)
for i=1:100
drawlater();
X=P*X;
clf();
plot2d([1,2,3],X)
set(gca(), 'data_bounds', [1, 0; 3 100]);
drawnow();
end
我也注意到结果并不好,但这是你正在生成的数据和你想要的固定比例的问题,而不是动画“技术”本身。
答案 2 :(得分:0)
我建议采用这种动画制作方式,即使用data
实体的Polyline
字段:
clf
plot2d([1,2,3],X)
h = gce().children
gca().data_bounds(3:4)=[1e-30,100];
gca().log_flags="nln"
for i=1:100
X=P*X;
h.data(:,2) = X;
sleep(100)
end
没有sleep(100)
的动画太快了...