Colormap on date

I get a ValueError when trying to create a colorbar based on date. It works on other fields e.g. lat

import geopandas as gpd
import holoviews
import hvplot.pandas
import numpy as np
import pandas as pd

date_range = pd.date_range("2020-01-01", periods=5)
lat = np.random.randint(-90, high=90, size=len(date_range))
lon = np.random.randint(-180, high=180, size=len(date_range))
df = pd.DataFrame({"date": date_range, "lat": lat, "lon": lon})

gdf = gpd.GeoDataFrame(
    df,
    geometry=gpd.points_from_xy(df["lon"], df["lat"]),
    crs="epsg:4326",
)

gdf.hvplot(c="date")

gives

holoviews.ipython.show_traceback()

Traceback (most recent call last):

  File "/Users/ray/miniconda3/envs/main/lib/python3.9/site-packages/holoviews/plotting/bokeh/element.py", line 1360, in _init_glyphs
    style = self._apply_transforms(element, data, ranges, style)

  File "/Users/ray/miniconda3/envs/main/lib/python3.9/site-packages/holoviews/plotting/bokeh/element.py", line 1160, in _apply_transforms
    cmapper = self._get_colormapper(v, element, ranges,

  File "/Users/ray/miniconda3/envs/main/lib/python3.9/site-packages/holoviews/plotting/bokeh/element.py", line 1930, in _get_colormapper
    cmapper = colormapper(palette=palette, **opts)

  File "/Users/ray/miniconda3/envs/main/lib/python3.9/site-packages/bokeh/models/mappers.py", line 97, in __init__
    super().__init__(**kwargs)

  File "/Users/ray/miniconda3/envs/main/lib/python3.9/site-packages/bokeh/model/model.py", line 128, in __init__
    super().__init__(**kwargs)

  File "/Users/ray/miniconda3/envs/main/lib/python3.9/site-packages/bokeh/core/has_props.py", line 206, in __init__
    setattr(self, name, value)

  File "/Users/ray/miniconda3/envs/main/lib/python3.9/site-packages/bokeh/core/has_props.py", line 230, in __setattr__
    return super().__setattr__(name, value)

  File "/Users/ray/miniconda3/envs/main/lib/python3.9/site-packages/bokeh/core/property/descriptors.py", line 283, in __set__
    value = self.property.prepare_value(obj, self.name, value)

  File "/Users/ray/miniconda3/envs/main/lib/python3.9/site-packages/bokeh/core/property/bases.py", line 365, in prepare_value
    raise ValueError(f"failed to validate {obj_repr}.{name}: {error}")

ValueError: failed to validate CategoricalColorMapper(id='1075', ...).factors: expected an element of either Seq(String), Seq(Tuple(String, String)) or Seq(Tuple(String, String, String)), got [numpy.datetime64('2020-01-01T00:00:00.000000000'), numpy.datetime64('2020-01-02T00:00:00.000000000'), numpy.datetime64('2020-01-03T00:00:00.000000000'), numpy.datetime64('2020-01-04T00:00:00.000000000'), numpy.datetime64('2020-01-05T00:00:00.000000000')]

Work around is
df["day_number"] = (df["date"] - df["date"].min()).dt.days

I would guess that’s a limitation at the Bokeh level, but to be completely sure I’d need to try it using a pure Bokeh example, and I don’t know enough Bokeh to set that up.