如何更改 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()
我只是想知道如何根据频率更改动画正弦线的颜色。现在,它是我存储在名为 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()