It’s indicated on 3D Mesh Plots in Python that ** go.Mesh3d draws a 3D set of triangles with vertices given by x , y and z.**.

May I ask how to draw mesh surface in Plotly of which **each face** may have **more than three vertices**?

It’s indicated on 3D Mesh Plots in Python that ** go.Mesh3d draws a 3D set of triangles with vertices given by x , y and z.**.

May I ask how to draw mesh surface in Plotly of which **each face** may have **more than three vertices**?

If your polygons are all convex polygons, then you must triangulate them. The array of vertices is the same, but to polygons one associates the array of triangles:

```
import numpy as np
polygons = [[0,2,7], [1,5,10,12], [6,8,4], [9, 7, 2, 4, 12]]
triangles =[]
for p in polygons:
if len(p) <3:
raise ValueError("each polygon must have len >=3")
elif len(p) == 3:
triangles.append(p)
else:
triangles.extend([[p[0], p[i], p[i+1]] for i in range(1, len(p)-1)])
print(triangles)
[[0, 2, 7],
[1, 5, 10],
[1, 10, 12],
[6, 8, 4],
[9, 7, 2],
[9, 2, 4],
[9, 4, 12]]
```

Now you can use go.Mesh3d:

```
x, y, z = vertices.T
i, j, k = np.asarray(triangles).T
fig = go.Figure(go.Mesg3d(x=x, y=y, z=z,
i=i, j=j, k=k,
intensity=z,
colorscale="your_preferred_colorscale"))
```

Thanks, @empet

However, I didn’t quite get the example code, especially the **polygons** list of lists. May I ask what does it mean?

Plus, I got the error **TypeError: ‘list’ object is not callable** running the code for this line:

```
triangles.extend([[p[0], p[i], p[i+1]] for i in range(1, len(p)-1)])
```

Appreciate your advice.

@oat You addressed the following question:

“May I ask how to draw mesh surface in Plotly of which **each face** may have **more than three vertices** ?”, but did not mention how many vertices have your faces. So I gave a general answer, when you have triangles, quadrangles, etc in your list of lists, that I caled naturally: `polygons`

. Perhaps you expected to call it `faces`

or otherwise, like in your un-specified code. I copied again the code I gave here and pasted in my notebook and it works.

I don’t understand why you get that error. The code is correct. If you want a solution for your usecase, please provide data.