Hi @izak,

Welcome to Plotly forum.

For a surface that theoretically is defined by an equation z = F(x, y), you must provide

x, y as 1d arrays, and z as a 2d array of shape (y.shape[0 ], x.shape[0]). Since you have x as a datetime, you have to associate an auxiliary numerical 1d array of the same length as the list of datetimes.

Here is a short example that can be adapted to your needs:

```
import numpy as np
import plotly.graph_objects as go
from datetime import datetime
d= [datetime(2019, 12, k).strftime("%m.%d.%y") for k in range(1,16)]
x = np.arange(1, 16)
y = np.linspace(-1, 1, 20)
X, Y = np.meshgrid(x, y)
z = X*Y
fig = go.Figure(go.Surface(x=x, y=y, z=z)) # x, y are 1D, while z is 2D
fig.update_scenes(xaxis_tickmode= 'array', xaxis_tickvals = x, xaxis_ticktext=d, )
fig.update_layout(width=800, height=800)
```

The 15-list, d, contains the strings giving datetimes.

x is an array of length 15. x[k] represents in the k^{th} day in the list d.

Here z is computed by a formula, but you can provide z as a result of of your daily recordings.

z is 2d array.

In order to be displayed the datetimes as xaxis ticklabels, you have to define as `tickvals`

the x-values, and as `ticktext`

the list of strings defining the dates.