funcanimation python

 xdata=[]
 foriin range(20):
     xdata.append(-0.4)
 def.drawing(xdata):
     fig,      ax=plt.subplots()
     ydata=         []
     Ln,       ax.plot(r1                [],ro')
     definit():
          ax.set_xlim(,1)
          ax.set_ylim(-0.3,-0.5)
          return Ln
     defanimate(i):
          Xdata.append(i)
          ydata       =np.arange(,1.05,0.05)
          Ln.set_data(xdata,ydata)
          return Ln
     ani = FuncAnimation(fig
                              animate
                              frames=xdata
                              init_func=init
                              bit=rue
     plt.show()
 drawing(xdata)

【以下回答由 GPT 生成】

这段代码有几个问题,让我们一步步来解决它们。

首先,我们需要导入一些必要的库,包括matplotlibnumpy

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation

接下来,我们注意到在drawing函数中,我们定义了xdata作为一个空的列表,并希望往其中添加元素。然而,在创建动画时,我们将xdata作为帧来使用,这是不正确的。我们应该使用range(20)作为帧。

def drawing():
    fig, ax = plt.subplots()
    ydata = []
    Ln, = ax.plot([], [])
    xdata = range(20)  # 修改这行代码
    ...

然后,在animate函数中,我们需要将新的xdata添加到xdata列表中。但是,我们应该使用extend方法而不是append方法。这样,xdata列表将包含从019的所有值。

def animate(i):
    xdata.extend([i])  # 修改这行代码
    ...

最后,我们注意到在animate函数中,我们创建了一个新的ydata列表,这是不必要的。我们只需要使用np.arange来生成ydata即可。

def animate(i):
    ydata = np.arange(0, 1.05, 0.05)  # 修改这行代码
    ...

下面是完整的修复后的代码:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation

def drawing():
    fig, ax = plt.subplots()
    ydata = []
    Ln, = ax.plot([], [])
    xdata = range(20)

    def init():
        ax.set_xlim(0, 1)
        ax.set_ylim(-0.3, -0.5)
        return Ln

    def animate(i):
        xdata.extend([i])
        ydata = np.arange(0, 1.05, 0.05)
        Ln.set_data(xdata, ydata)
        return Ln

    ani = FuncAnimation(fig,
                        animate,
                        frames=xdata,
                        init_func=init,
                        blit=True)
    plt.show()

drawing()

希望这可以帮助到你!如果有任何问题,请随时向我提问。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^