【问题标题】:How do I get a fill_between shape in Funcanimation?如何在 Funcanimation 中获得 fill_between 形状?
【发布时间】:2017-06-07 12:53:04
【问题描述】:

我想制作一个移动图,在绘制曲线时,曲线下方的区域会被着色。

我用谷歌搜索了一下,发现我应该以某种方式创建一个补丁。但是,我不明白他们给出的任何例子,所以让我在这里用我的具体例子问它:

import numpy as np
from matplotlib import pyplot as plt
from matplotlib import animation
import pylab as p

data = np.loadtext('datafile.dat', delimiter=',')
A = data[:,1]
B = data[:,2]

fig = plt.figure(figsize=(25,5), dpi=80)
ax = plt.axes(xlim=(0, 3.428), ylim=(-1,1))
line, = ax.plot([], [], lw=5)

def init():
    line.set_data([], [])
    return line,

def animate(i):
    x = A[0:(i-1)*400]
    y = B[0:(i-1)*400]
    line.set_data(x,y)
    # Here is the problem. I would now like to add the following line
    # p.fill_between(x, 0, y, facecolor = 'C0', alpha = 0.2)
    return line,

anim = animation.FuncAnimation(fig,animate, init_func=init, frames = 857, interval=20, blit=True)

我希望有人可以为我的问题提供解决方案,或者至少为我指明正确的方向。

所以我的问题是:如何添加注释部分而不会出现任何错误?

【问题讨论】:

    标签: python animation matplotlib


    【解决方案1】:

    假设您想要blit = True,您还需要返回fill_between 生成的补丁。

    p = plt.fill_between(x, y, 0)
    return line, p,
    

    完整的工作示例:

    import numpy as np
    from matplotlib import pyplot as plt
    from matplotlib import animation
    
    X = np.linspace(0,3.428, num=250)
    Y = np.sin(X*3)
    
    fig = plt.figure(figsize=(13,5), dpi=80)
    ax = plt.axes(xlim=(0, 3.428), ylim=(-1,1))
    line, = ax.plot([], [], lw=5)
    
    def init():
        line.set_data([], [])
        return line,
    
    def animate(i):
        x = X[0:(i-1)]
        y = Y[0:(i-1)]
        line.set_data(x,y)
        p = plt.fill_between(x, y, 0, facecolor = 'C0', alpha = 0.2)
        return line, p,
    
    anim = animation.FuncAnimation(fig,animate, init_func=init, 
                                   frames = 250, interval=20, blit=True)
    
    plt.show()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-04
      • 2021-05-21
      相关资源
      最近更新 更多