【问题标题】:Draw a block of colour on top of a figure to create trails in python在图形顶部绘制一块颜色以在 python 中创建轨迹
【发布时间】:2011-02-22 18:14:29
【问题描述】:

我有一组数据,我正在使用 pylab 绘制这些数据,这些数据会随着时间的推移而变化。

我可以将每个帧存储为 .png 并使用 iMovie 将它们放在一起,但我想在绘图中添加轨迹以说明先前时间点的位置。

我认为可以做到这一点的一种方法是在图上设置 plt.hold(True),然后在数据顶部绘制一个轴大小的白色块,(透明度值)alpha

有人知道我该怎么做吗? axisbg 似乎不起作用。

非常感谢,

汉娜

【问题讨论】:

    标签: python patch alpha


    【解决方案1】:

    在一系列绘图上实现渐变轨迹的另一种方法是使用 .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
    

    【讨论】:

      猜你喜欢
      • 2017-01-18
      • 2013-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-20
      • 2012-04-15
      • 2015-11-07
      • 1970-01-01
      相关资源
      最近更新 更多