Изменение цвета лица осей 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)

0 ответов

Другие вопросы по тегам