如何更改 matplotlib 中动画线条的颜色?

How to change the color of an animated line in matplotlib?

我只是想知道如何根据频率更改动画正弦线的颜色。现在,它是我存储在名为 w 的变量中的频率。但是,我不知道如何进行颜色变化的更新。

我现在的代码是:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib import animation
fig = plt.figure()
ax = plt.axes(xlim=(-6,6),ylim=(-1.5,1.5))
line,=ax.plot([],[])


def init():
    line.set_data([],[])
    return line,

w=list(range(0,5))+list(range(5,0,-1))


def animate(i):
    x=np.linspace(-6,6,1000)
    y = np.sin((x*w[i]))
    line.set_data(x,y)
    return line, 
    
anim = animation.FuncAnimation(fig, animate, init_func=init,
                                frames=10,interval=600,repeat=True)

类似于:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib import animation
import matplotlib as mpl
fig = plt.figure()
ax = plt.axes(xlim=(-6,6),ylim=(-1.5,1.5))
line,=ax.plot([],[])


def init():
    line.set_data([],[])
    return line,

w=list(range(0,5))+list(range(5,0,-1))

cmap = plt.cm.viridis
norm = mpl.colors.Normalize(vmin=0, vmax=5)

def animate(i):
    x=np.linspace(-6,6,1000)
    y = np.sin((x*w[i]))
    line.set_data(x,y)
    col = cmap(norm(w[i]))
    line.set_color(col)
    return line, 
    
anim = animation.FuncAnimation(fig, animate, init_func=init,
                                frames=10,interval=600,repeat=True)
plt.show()