My filling is that your contours are not computed, because your surface is not defined as z=f(x,y). Your surface is given only by its z-values. Theoretically the algorithm computing the countour lines on a surface solves the system z=f(x,y), z=cst to get their equation or you don’t have any function of x,y.

Try the following trick: if `haf`

is a numpy array of shape (m,n) choose some intervals for x, and y, such that to interpret your surface as being of equation z=haf(x,y), x in [a,b], y in [c,d]

```
x=np.linspace(a, b, n)
y=np.linspace(c,d, m)
x,y=np.meshgrid(x,y)
```

and define:

```
surf2=dict(x=x, y=y, z=haf,
showscale=True,
opacity=0.8, showlegend=True, type='surface',
cauto=False,
colorscale=col,
name='H-alpha',
reversescale=False, colorbar=go.ColorBar(x=-0.84),
contours=dict(z=dict(show=True,
project=dict(z=True),
color='rgb(50,50,50)')))
```