Альтернативный способ получения следов затухания на последовательности графиков заключается в изменении альфа-значений отображаемых элементов с использованием метода .set_alpha()
, если он доступен для конкретного метода построения, который вы используете.
Вы можете сделать это, добавив выходные данные конкретной функции печати, которую вы используете (т. Е. «Дескриптор» для графика), в список. Затем перед каждым новым графиком вы можете найти и уменьшить альфа-значения каждого существующего элемента в этом списке.
В следующем примере элементы, альфа-значения которых выходят за пределы определенной точки, удаляются из графика с помощью .remove()
, а их дескриптор затем удаляется из списка.
import pylab as pl
#Set a decay constant; create a list to store plot handles; create figure.
DECAY = 2.0
plot_handles = []
pl.figure()
#Specific to this example: store x values for plotting sinusoid function
x_axis=pl.linspace( 0 , 2 * pl.pi , 100 )
#Specific to this example: cycle 50 times through 16 different sinusoid
frame_counter = 0
for phase in pl.linspace( 0 , 2 * pl.pi * 50 , 16 * 50 ):
#Reduce alpha for each old item, and remove
for handle in plot_handles:
alpha = handle.get_alpha()
if alpha / DECAY > 0.01 :
handle.set_alpha( alpha / DECAY )
else:
handle.remove()
plot_handles.remove( handle )
#Add new output of calling plot function to list of handles
plot_handles += pl.plot( pl.sin( x_axis + phase ) , 'bo' )
#Redraw figure
pl.draw()
#Save image
pl.savefig( 'frame_' + str( frame_counter ).zfill( 8 ) + '.png' )
frame_counter += 1