I'm animating uploaded data from a GUI. The animation is a trail of data that adds new values as dark blue and old values trail off into white, they translate across S from 1->0 in HSV color space. When I run the animation from the GUI – I'm using the App Editor – the axis limits gets recalculated every frame of the animation, it's awful. But they work fine when I'm not using the GUI. Do I need to set the axes limits another way?
I specify axis limits using axis as follows
axis(1.1*[-boardWid/2 boardWid/2 -boardHei/2 boardHei/2])
Also, my code, the one that does work (from a script)
figure(1), clfboardWid = 600;boardHei = 400;numtrail = 15; % amount of trailing markers
t = linspace(0,2*pi);datax = boardWid/2 * cos(t);datay = boardHei/2 * sin(t);hsvcmap = [0.6*ones(numtrail,1), linspace(1,0,numtrail)', ones(numtrail,1)];ax = scatter(datax(1:numtrail), datay(1:numtrail), [], hsv2rgb(hsvcmap), 'filled');axis(1.1*[-boardWid/2 boardWid/2 -boardHei/2 boardHei/2])daspect([1 1 1]) % specify axes ratio to agree with board in visual space
%%play/make the animation
%%maybe we want to make a movie instead
for frame = (numtrail+1):length(datax) ax.XData = [datax(frame) ax.XData(1:end-1)]; ax.YData = [datay(frame) ax.YData(1:end-1)]; drawnow pause(0.01)end
and the code that doesn't is embedded in the mess of the app files, but here's the function that implements the animation routine.
function results = generateTrailingScatterAnimation(app, datax, datay, numtrail) boardWid = 600; boardHei = 400; cla(app.UIAxes); hsvcmap = [0.6*ones(numtrail,1), linspace(1,0,numtrail)', ones(numtrail,1)]; ax = scatter(app.UIAxes, datax(1:numtrail), datay(1:numtrail),... [], hsv2rgb(hsvcmap), 'filled'); axis(1.1*[-boardWid/2 boardWid/2 -boardHei/2 boardHei/2]) daspect([1 1 1]) % specify axes ratio to agree with board in visual space %%play/make the animation %%maybe we want to make a movie instead for frame = (numtrail+1):length(datax) ax.XData = [datax(frame) ax.XData(1:end-1)]; ax.YData = [datay(frame) ax.YData(1:end-1)]; drawnow pause(0.01) end end
Best Answer