Graphics

Erase Modes

You can select the method MATLAB uses to redraw graphics objects. One event that causes MATLAB to redraw an object is changing the properties of that object. You can take advantage of this behavior to create animated sequences. A typical scenario is to draw a graphics object, then change its position by respecifying the x-, y,- and z-coordinate data by a small amount with each pass through a loop.

You can create different effects by selecting different erase modes. This section illustrates how to use the three modes that are useful for dynamic redrawing:

• `none` - MATLAB does not erase the objects when it is moved.
• `background` - MATLAB erases the object by redrawing it in the background color. This mode erases the object and anything below it (such as grid lines).
• `xor` - This mode erases only the object and is usually used for animation.

All three modes are faster (albeit less accurate) than the normal mode used by MATLAB.

Example - Animating with Erase Modes

It is often interesting and informative to see 3-D trajectories develop in time. This example involves chaotic motion described by a nonlinear differential equation known as the Lorenz strange attractor. It can be written

in the form

with a vector valued function y(t) and a matrix A, which depends upon y.

The solution orbits about two different attractive points without settling into a steady orbit about either. This example approximates the solution with the simplest possible numerical method - Euler's method with fixed step size.The result is not very accurate, but it has the same qualitative behavior as other methods.

• ```A = [ -8/3 0 0; 0 -10 10; 0 28 -1 ];
y = [35 -10 -7]';
h = 0.01;
p = plot3(y(1),y(2),y(3),'.', ...
'EraseMode','none','MarkerSize',5); % Set EraseMode to none
axis([0 50 -25 25 -25 25])
hold on
for i=1:4000
A(1,3) = y(2);
A(3,1) = -y(2);
ydot = A*y;
y = y + h*ydot;
% Change coordinates
set(p,'XData',y(1),'YData',y(2),'ZData',y(3))
drawnow
i=i+1;
end
```

The `plot3` statement sets `EraseMode` to `none`, indicating that the points already plotted should not be erased when the plot is redrawn. In addition, the handle of the plot object is saved. Within the `for` loop, a `set` statement references the plot object and changes its internally stored coordinates for the new location. While this manual cannot show the dynamically evolving output, this picture shows a snapshot.

Note that, as far as MATLAB is concerned, the graph created by this example contains only one dot. What you see on the screen are remnants of previous plots that MATLAB has been instructed not to erase. The only way to print this graph from MATLAB is with a screen capture. You can use the `capture` command to generate a MATLAB image of the figure window contents.

Background Erase Mode.   To see the effect of `EraseMode` `background`, add these statements to the previous program.

• ```p = plot3(y(1),y(2),y(3),'square', ...
'EraseMode','background','MarkerSize',10,...
'MarkerEdgeColor',[1 .7 .7],'MarkerFaceColor',[1 .7 .7]);

for i=1:4000
A(1,3) = y(2);
A(3,1) = -y(2);
ydot = A*y;
y = y + h*ydot;
set(p,'XData',y(1),'YData',y(2),'ZData',y(3))
drawnow
i=i+1;
end
hold off
```

Since `hold` is still `on`, this code erases the previously created graph by setting the `EraseMode` property to `background` and changing the marker to a "pink eraser" (a square marker colored pink).

Xor Erase Mode.   If you change the `EraseMode` of the first `plot3` statement from `none` to `xor`, you will see a moving dot (`Marker` '`.`') only. `Xor` mode is used to create animations where you do not want to leave remnants of previous graphics on the screen.

Additional Examples

The MATLAB demo, `lorenz`, provides a more accurate numerical approximation, and a more elaborate display of Lorenz strange attractor example. Other MATLAB demos illustrate animation techniques.

 Example - Visualizing an FFT as a Movie Formatting Graphs