Octave绘图指向动画

时间:2014-06-13 14:05:15

标签: matlab plot octave

我有以下八度脚本,

TOTAL_POINTS = 100;
figure(1)

for i=1:TOTAL_POINTS
   randX = rand(1); 
   randY = rand(1);

   scatter(randX, randY);
   hold on; 
endfor

当我通过octave script.m运行时,我什么都没得到。当我将行pause添加到此脚本的末尾时,它可以正常工作,但我只能在绘制所有100点后看到该图。

我希望逐点看到情节。在我绘制每一点之后。

PS:我有Ubuntu

1 个答案:

答案 0 :(得分:6)

尝试在迭代结束时添加drawnow。至少在Matlab中有效。它强制解释器清空图形事件队列。

如果在迭代结束时包含pause,则可能不需要drawnowpause已清空事件队列)。但我通常会添加它以防万一。

其他评论:

  • 每次迭代都不需要hold on。一开始就能做到这一点。
  • 您可能希望冻结轴以防止在添加新点时自动缩放

通过这些修改,您的代码将成为:

TOTAL_POINTS = 100;
figure(1)
hold on; 
axis([0 1 0 1]) %// set axis
axis manual %// prevent axis from auto-scaling
for i=1:TOTAL_POINTS
   randX = rand(1); 
   randY = rand(1);
   scatter(randX, randY);
   pause(.1) %// pause 0.1 seconds to slow things down
   drawnow
endfor