Изменение цвета лица осей matplotlib 3D PolyCollection
Я работаю над проблемой визуализации, когда я хочу построить геометрическую часть, используя многоугольники, заданные их координатами узлов (я в основном импортировал координаты многоугольника из программы FEM). Теперь я изо всех сил пытаюсь изменить цвет лица каждого многоугольника, не меняя каждый раз заново (занимает много времени). Вот что я закодировал:
fig = plt.figure()
ax = axes3d.Axes3D(fig)
for i in range(0, len(e_coordinates)):
if len(e_coordinates[i]) == 3:
poly = p3dc([[e_coordinates[i][0], e_coordinates[i][1], e_coordinates[i][2]]],
facecolors=colors[i], edgecolors='black', linewidths=0.3)
elif len(e_coordinates[i]) == 4:
poly = p3dc([[e_coordinates[i][0], e_coordinates[i][1], e_coordinates[i][2], e_coordinates[i][3]]],
facecolors=colors[i], edgecolors='black', linewidths=0.3)
ax.add_collection3d(poly)
plt.show()
Массив e_coordinates
задает форму и положение многоугольника (полигон с 3 или 4 ребрами) и вектор colors
определяет исходные цвета лица.
Ищу что-то вроде (псевдокод внимания;))
polys = ax.get_collection()
polys.set_color(colors)
ax.set_collection(polys)
ax.update()
Надеюсь, мне удалось прояснить, что я пытаюсь сделать, и что, возможно, у кого-то есть полезная идея!
ОБНОВЛЕНИЕ: это то, что у меня есть сейчас, но отображение обновленных цветов у меня не работает...
fig = plt.figure()
ax = axes3d.Axes3D(fig)
poly = p3dc(e_coordinates, facecolor="white")
ax.add_collection3d(poly)
for j in range(0,100):
colors = color_generater(j) # my own function to get desired colors
ax.collections[0].set_facecolor(colors)
plt.draw()
plt.pause(0.01)