Вы можете сделать это, изменив 4-й Color
атрибут прошлых строк.
Вот демо-результат, в котором я потушил 10% прозрачности каждого кадра, так что только самые последние 10 строк
![fade plot demo](https://i.stack.imgur.com/ZX7oX.gif)
Вот код, см. мои комментарии для деталей:
% Set up some demo values for plotting around a circle
a = 0:0.1:2*pi; n = numel(a);
[x,y] = pol2cart( a, ones(1,n) );
% Initialise the figure, set up axes etc
f = figure(1); clf; xlim([-1,1]); ylim([-1,1]);
% Array of graphics objects to store the lines. Could use a cell array.
lines = gobjects( 1, n );
% "Buffer" size, number of historic lines to keep, and governs the
% corresponding fade increments.
nFade = 10;
% Main plotting loop
for ii = 1:n
% Plot the line
lines(ii) = line( [0,x(ii)], [0,y(ii)] );
% Loop over past lines.
% Note that we only need to go back as far as ii-nFade, earlier lines
% will already by transparent with this method!
for ip = max(1,ii-nFade):ii
% Set the 4th Color attribute value (the alpha) as a percentage
% from the current index. Could do this various ways.
lines(ip).Color(4) = max( 0, 1 - (ii-ip)/nFade );
end
% Delay for animation
pause(0.1);
end
Возможно, вы захотите сделать некоторыеуправление графиком / памятью, если у вас много строк.Вы можете удалить прозрачные линии, добавив что-то вроде
if lines(ii).Color(4) < 0.01
delete(lines(ii));
end
в цикле.Таким образом, ваша фигура не будет иметь множество прозрачных остатков.
Примечания:
- Я сгенерировал фактический GIF , используя
imwrite
на случайэто тоже интересно. - По-видимому, в R2018b была исключена функция «4-го значения цвета» (не уверен, что она когда-либо была официально задокументирована).
Получил достаточно голосов, чтобы мотивировать сделать немного более веселую демо ...
![fader](https://i.stack.imgur.com/REaMT.gif)