gpt4 book ai didi

animation - 如何使用 matplotlib 在单个图中绘制两个动画?

转载 作者:行者123 更新时间:2023-12-05 01:45:30 28 4
gpt4 key购买 nike

在下面的代码中,我有两个独立的动画,我将它们绘制在两个独立的子图中。我希望它们都在一个图中运行而不是这个。我已经尝试了下面解释的方法,但它给了我下面解释的问题。请帮忙

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
import time as t

x = np.linspace(0,5,100)

fig = plt.figure()
p1 = fig.add_subplot(2,1,1)
p2 = fig.add_subplot(2,1,2)

def gen1():
i = 0.5
while(True):
yield i
i += 0.1


def gen2():
j = 0
while(True):
yield j
j += 1


def run1(c):
p1.clear()
p1.set_xlim([0,15])
p1.set_ylim([0,100])

y = c*x
p1.plot(x,y,'b')

def run2(c):
p2.clear()
p2.set_xlim([0,15])
p2.set_ylim([0,100])

y = c*x
p2.plot(x,y,'r')

ani1 = animation.FuncAnimation(fig,run1,gen1,interval=1)
ani2 = animation.FuncAnimation(fig,run2,gen2,interval=1)
fig.show()

我尝试创建一个子图而不是 p1p2 并将两个图绘制在该单个子图中。那只是绘制一个图形而不是两个图形。据我所知,这是因为其中一个在绘制后立即被清除。

我该如何解决这个问题?

最佳答案

由于您没有显示实际产生问题的代码,因此很难判断问题出在哪里。

但要回答如何在同一轴(子图)中设置两条线的动画,我们可以去掉 clear() 命令并更新线,而不是生成新的线为每一帧绘图(无论如何效率更高)。

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

x = np.linspace(0,15,100)

fig = plt.figure()
p1 = fig.add_subplot(111)

p1.set_xlim([0,15])
p1.set_ylim([0,100])

# set up empty lines to be updates later on
l1, = p1.plot([],[],'b')
l2, = p1.plot([],[],'r')

def gen1():
i = 0.5
while(True):
yield i
i += 0.1

def gen2():
j = 0
while(True):
yield j
j += 1

def run1(c):
y = c*x
l1.set_data(x,y)

def run2(c):
y = c*x
l2.set_data(x,y)

ani1 = animation.FuncAnimation(fig,run1,gen1,interval=1)
ani2 = animation.FuncAnimation(fig,run2,gen2,interval=1)
plt.show()

关于animation - 如何使用 matplotlib 在单个图中绘制两个动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41574024/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com