Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在动画中获得形状之间的填充?_Python_Animation_Matplotlib - Fatal编程技术网

Python 如何在动画中获得形状之间的填充?

Python 如何在动画中获得形状之间的填充?,python,animation,matplotlib,Python,Animation,Matplotlib,我想做一个移动的绘图,当绘制曲线时,曲线下的区域会被着色 我在谷歌上搜索了一下,发现我应该以某种方式创建一个补丁。然而,我不理解他们给出的任何例子,所以让我在这里用我的具体例子问一下: import numpy as np from matplotlib import pyplot as plt from matplotlib import animation import pylab as p data = np.loadtext('datafile.dat', delimiter=',')

我想做一个移动的绘图,当绘制曲线时,曲线下的区域会被着色

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

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)
我希望有人能为我的问题提供解决方案,或者至少为我指明正确的方向


因此,我的问题是:如何添加注释部分而不出现任何错误?

假设您想要
blit=True
,您还需要返回
fill\u产生的补丁

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()