在Python MatPlotLib中使用动画时如何更改绘制曲线的颜色?

use*_*049 4 python plot matplotlib

我有一段代码,它使用Python MatPlotLib中的FuncAnimation方法生成50个随机指数衰减曲线,并更新曲线图,显示每条曲线生成的曲线.每条曲线显示不同的颜色.我希望能够将普通的曲线变灰,因为新的曲线是以设定的颜色生成的,比如蓝色.我希望有人能帮帮忙.

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()
Run Code Online (Sandbox Code Playgroud)

Max*_*Noe 5

您必须存储在再次绘制之前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()
Run Code Online (Sandbox Code Playgroud)

情节结果