Итак, я скопировал этот код из Анимация, основанная только на обновлении цветов на графике , и сделал некоторые небольшие корректировки. У меня есть сюжет и я хотел бы изменить цвет одной строки в каждом кадре. Код выглядит следующим образом:
import numpy as np
from matplotlib import pyplot as plt
from matplotlib.collections import LineCollection
import matplotlib.animation as animation
lines=[]
points=[(1,2),(5,4),(1,3),(2,1),(3,5)]
for i in range(len(points)-1):
lines.append([points[i],points[i+1]])
fig, ax = plt.subplots()
colors = np.array([0.1,0.1,0.1,0.9])
col = LineCollection(lines, array=colors, cmap=plt.cm.bwr)
ax.add_collection(col)
ax.autoscale()
print(colors)
def update(i):
colors[i%4]=np.random.random()
col.set_array(colors)
return col,
ani = animation.FuncAnimation(fig, update, interval=2000, blit=True,
init_func=lambda: [col])
plt.show()
Хотя он и работает, если я оставлю его таким, я изначально хочу, чтобы все строки имели одинаковый цвет. Когда я изменяю начальные цвета на
colors = np.array([0.9,0.9,0.9,0.9])
вместо
colors = np.array([0.1,0.1,0.1,0.9])
, график просто перестает обновляться и остается один цвет все время. Если я изменю только одно число из массива цветов, это работает. Почему это так и что я должен изменить, чтобы он работал?