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