我有一段代码使用Python MatPlotLib中的FuncAnimation方法来生成50条随机的指数衰减曲线,并在重新生成曲线时更新显示彼此的曲线,每条曲线以不同的颜色显示。我希望能够将previos曲线显示为灰色,因为新的曲线是以一种设置的颜色生成的,例如Blue。希望有人能提供帮助。
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
import random
fig = plt.figure()
ax1 = fig.add_subplot(1,1,1)
def main(i):
# Actual parameters
A0 = 10
K0 = random.uniform(-15,-1)
C0 = random.uniform(0,10)
# Generate some data based on these
tmin, tmax = 0, 0.5
num = 20
t = np.linspace(tmin, tmax, num)
y = model_func(t, A0, K0, C0)
ax1.plot(t,y)
def model_func(t, A, K, C):
return A * np.exp(K * t)
ani = animation.FuncAnimation(fig, main, interval=1000)
plt.show()
#1 楼
您必须存储
plot
返回的线实例并在再次绘制之前调用
set_color(color)
:
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
import random
# an empty variable, whre we store the returned line of plot:
line = None
fig = plt.figure()
ax1 = fig.add_subplot(1,1,1)
def main(i):
# we have to make line global:
global line
# Actual parameters
A0 = 10
K0 = random.uniform(-15,-1)
C0 = random.uniform(0,10)
# Generate some data based on these
tmin, tmax = 0, 0.5
num = 20
t = np.linspace(tmin, tmax, num)
y = model_func(t, A0, K0, C0)
# check if line already exists, if yes make it gray:
if line is not None:
line.set_color('gray')
# plot returns a list with line instances, one for each line you draw,
# the comma is used to unpack the one element list
line, = ax1.plot(t,y, color='red')
def model_func(t, A, K, C):
return A * np.exp(K * t)
ani = animation.FuncAnimation(fig, main, interval=1000)
plt.show()
评论
注意更改动画功能的限制。另外,传递给FuncAnimation回调的函数应返回一个艺术家列表(添加的所有行),以使效果更好。
–塔卡斯韦尔
2014年8月4日在22:34