0

我正在研究一个可视化问题,我想使用由节点坐标指定的多边形绘制几何部分(我基本上一直在从 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)
4

0 回答 0