在图形顶部绘制一块颜色块,以在python中创建轨迹
我有一组数据,我正在用pylab绘制,它会随着时间的推移而变化 我可以将每个帧存储为.png格式,并使用iMovie将它们放在一起,但我想在绘图中添加轨迹,以说明以前时间点的位置在图形顶部绘制一块颜色块,以在python中创建轨迹,python,patch,alpha,Python,Patch,Alpha,我有一组数据,我正在用pylab绘制,它会随着时间的推移而变化 我可以将每个帧存储为.png格式,并使用iMovie将它们放在一起,但我想在绘图中添加轨迹,以说明以前时间点的位置 我认为可以做到这一点的一种方法是在图形上设置plt.hold(True),然后用(透明度值)alpha绘制一个轴大小的白色块。另一种在一系列绘图上实现褪色轨迹的方法是使用.set_alpha()方法更改绘制项目的alpha值,如果它可用于正在使用的特定打印方法 可以通过将正在使用的特定绘图函数的输出(即绘图的“句柄”)
我认为可以做到这一点的一种方法是在图形上设置plt.hold(True),然后用(透明度值)alpha绘制一个轴大小的白色块。另一种在一系列绘图上实现褪色轨迹的方法是使用
.set_alpha()
方法更改绘制项目的alpha值,如果它可用于正在使用的特定打印方法
可以通过将正在使用的特定绘图函数的输出(即绘图的“句柄”)附加到列表中来实现这一点。然后,在每个新绘图之前,您可以找到并减少该列表中每个现有项的alpha值
在以下示例中,使用.remove()
将alpha值下降超过某个点的项目从绘图中删除,然后从列表中删除其句柄
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