I have found the same problem (still in 2023 isnt fixed). I avoided it using this code that hope to be usefull for other users.
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
#Having a node list (point list) "nodes"
#Having a face list (triangle list) "faces"
#Having a "color_faces" list that contains the colors of each face
polygons = []
for i in range(faces.shape[0]):
face = faces[i]
polygon = Poly3DCollection([nodes[face]], alpha=.75, facecolor= color_faces[i] ,linewidths=2)
polygons.append(polygon)
ax.add_collection3d(polygon)
ax.set_xlim3d(np.min(nodes[:, 0]), np.max(nodes[:, 0]))
ax.set_ylim3d(np.min(nodes[:, 1]), np.max(nodes[:, 1]))
ax.set_zlim3d(np.min(nodes[:, 2]), np.max(nodes[:, 2]))
plt.show()
If you have the color information for nodes and not for faces, maybe this function to estimate the colors of the faces from the points that form it may be useful. (This just calculates the mean value, it doesnt do a gradient)
def color_nodes2faces(colorNodes,nodes,faces):
colored_faces = []
for face in faces:
face_color = (colorNodes[face[0]] + colorNodes[face[1]] + colorNodes[face[2]]) / 3
colored_faces.append(face_color)
return cm.jet(colored_faces)