Can';我的程序无法在python matplotlib中设置多个补丁的动画

Can';我的程序无法在python matplotlib中设置多个补丁的动画,python,animation,matplotlib,plot,simulation,Python,Animation,Matplotlib,Plot,Simulation,我试图在matplotlib(python)中设置两个不同粒子的动画。我刚刚想出了一种在matplotlib中设置一个粒子动画的方法,但是我在尝试让程序处理多个粒子时遇到了很大的困难。有人知道什么地方出了问题以及如何解决吗 import numpy as np from matplotlib import pyplot as plt from matplotlib import animation fig = plt.figure() fig.set_dpi(100) fig.set_size

我试图在matplotlib(python)中设置两个不同粒子的动画。我刚刚想出了一种在matplotlib中设置一个粒子动画的方法,但是我在尝试让程序处理多个粒子时遇到了很大的困难。有人知道什么地方出了问题以及如何解决吗

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

fig = plt.figure()
fig.set_dpi(100)
fig.set_size_inches(5, 4.5)

ax = plt.axes(xlim=(0, 100), ylim=(0, 100))
enemy = plt.Circle((10, -10), 0.75, fc='r')
agent = plt.Circle((10, -10), 0.75, fc='b')



def init():
    #enemy.center = (5, 5)
    #agent.center = (5, 5)
    ax.add_patch(agent)
    ax.add_patch(enemy)

    return []

def animationManage(i,agent,enemy):
    patches = []

    enemy.center = (5, 5)
    agent.center = (5, 5)

    enemy_patches = animateCos(i,agent)
    agent_patches = animateLine(i,enemy)

    patches[enemy_patches, agent_patches]

    #patches.append(ax.add_patch(enemy_patches))
    #patches.append(ax.add_patch(agent_patches))

    return enemy_patches

def animateCirc(i, patch):
    # It seems that i represents time step
    x, y = patch.center
    # 1st constant = position and 2nd constant = trajectory
    x = 50 + 30 * np.sin(np.radians(i))
    y = 50 + 30 * np.cos(np.radians(i))
    patch.center = (x, y)
    return patch,

def animateLine(i, patch):
    x, y = patch.center
    x = x + 1
    y = x+ 1
    patch.center = (x, y)
    return patch,


def animateCos(i, patch):
    x, y = patch.center
    x = x + 0.2
    y = 50 + 30 * np.cos(np.radians(i))
    patch.center = (x, y)
    return patch,

def animateSin(i, patch):
    x, y = patch.center
    x = x + 0.2
    y = 50 + 30 * np.sin(np.radians(i))
    patch.center = (x, y)
    return patch,


anim = animation.FuncAnimation(fig, animationManage, 
                               init_func=init, 
                               frames=360,
                               fargs=(agent,enemy,),
                               interval=20,
                               blit=True)


plt.show()
为一个粒子设置动画的工作代码

import numpy as np

from matplotlib import pyplot as plt
from matplotlib import animation

fig = plt.figure()
fig.set_dpi(100)
fig.set_size_inches(5, 4.5)

ax = plt.axes(xlim=(0, 100), ylim=(0, 100))
enemy = plt.Circle((10, -10), 0.75, fc='r')
agent = plt.Circle((10, -10), 0.75, fc='b')

def init():
    enemy.center = (5, 5)
    agent.center = (5, 5)
    ax.add_patch(enemy)
    ax.add_patch(agent)
    return enemy,

def animateCirc(i, patch):
    # It seems that i represents time step
    x, y = patch.center
    # 1st constant = position and 2nd constant = trajectory
    x = 50 + 30 * np.sin(np.radians(i))
    y = 50 + 30 * np.cos(np.radians(i))
    patch.center = (x, y)
    return patch,

def animateLine(i, patch):
    x, y = patch.center
    x = x + 1
    y = x+ 1
    patch.center = (x, y)
    return patch,


def animateCos(i, patch):
    x, y = patch.center
    x = x + 0.2
    y = 50 + 30 * np.cos(np.radians(i))
    patch.center = (x, y)
    return patch,

def animateSin(i, patch):
    x, y = patch.center
    x = x + 0.2
    y = 50 + 30 * np.sin(np.radians(i))
    patch.center = (x, y)
    return patch,


anim = animation.FuncAnimation(fig, animateCos, 
                               init_func=init, 
                               frames=360,
                               fargs=(enemy,),
                               interval=20,
                               blit=True)

plt.show()

非常感谢你!我是matplotlib的新手,所以我花了一段时间才弄明白哈哈,如果你不介意的话,你能看看我最近发布的一个问题吗?
import numpy as np
from matplotlib import pyplot as plt
from matplotlib import animation

fig = plt.figure()
fig.set_dpi(100)
fig.set_size_inches(5, 4.5)

ax = plt.axes(xlim=(0, 100), ylim=(0, 100))
enemy = plt.Circle((10, -10), 0.75, fc='r')
agent = plt.Circle((10, -10), 0.75, fc='b')


def init():
    enemy.center = (5, 5)
    agent.center = (5, 5)
    ax.add_patch(agent)
    ax.add_patch(enemy)

    return []


def animationManage(i,agent,enemy):
    animateCos(i,enemy)
    animateLine(i,agent)
    return []


def animateLine(i, patch):
    x, y = patch.center
    x += 0.25
    y += 0.25
    patch.center = (x, y)
    return patch,


def animateCos(i, patch):
    x, y = patch.center
    x += 0.2
    y = 50 + 30 * np.cos(np.radians(i))
    patch.center = (x, y)
    return patch,

anim = animation.FuncAnimation(fig, animationManage,
                               init_func=init,
                               frames=360,
                               fargs=(agent,enemy,),
                               interval=20,
                               blit=True,
                               repeat=True)


plt.show()